node.js中使用thrift的epoch日期不正确

时间:2013-04-19 23:03:31

标签: node.js integer thrift epoch

我似乎在node.js中获取了一个thrift对象的不同的纪元日期值,而不是存储在mongo数据库中并由服务返回的

Thrift定义文件(thrift v0.9.0),我有

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

Mongo记录

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

节点报告

createDate: 534785233,
lastUpdateDate: 534785233

生成的节点thrift客户端似乎引用了I64。

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

我感谢任何见解。

由于

1 个答案:

答案 0 :(得分:1)

给定数字的二进制表示形式为:

1366334385361  ->  10011111000011111111000000010110011010001
534785233      ->  00000000000011111111000000010110011010001

即。如果您使用1366334385361的低32位,则得到534785233.因此,在您正在使用的程序或包中的某处,它将被转换/截断为32位整数,例如: INT(1366334385361)