1

thrift オブジェクトの node.js で、mongo データベースに保存され、サービスによって返されるものとは異なるエポック日付値を取得しているようです

Thrift 定義ファイル (thrift v0.9.0)、私は

struct Profile {
    ...
    4: i64 createDate,
    5: i64 lastUpdateDate

モンゴレコード

"createdTimestamp" : NumberLong("1366334385361"),
"lastUpdatedTimestamp" : NumberLong("1366334385361")

ノード レポート

createDate: 534785233,
lastUpdateDate: 534785233

生成された node thrift クライアントは、I64 を参照しているようです。

if (this.createDate !== null && this.createDate !== undefined) {
    output.writeFieldBegin('createDate', Thrift.Type.I64, 14);
    output.writeI64(this.createDate);
    output.writeFieldEnd();
}

どんな洞察にも感謝します。

ありがとう

4

1 に答える 1

1

指定された数値のバイナリ表現は次のとおりです。

1366334385361  ->  10011111000011111111000000010110011010001
534785233      ->  00000000000011111111000000010110011010001

つまり、1366334385361 の下位 32 ビットを取得すると、534785233 になります。したがって、使用しているプログラムまたはパッケージのどこかで、int(1366334385361) などの 32 ビット整数に変換/切り捨てられます。

于 2013-04-20T08:16:54.133 に答える