在JavaScript Google Flatbuffers中,如何编写ulong? 我在C++程序中做这件事没有问题,但我一直坚持在JS.< /P>中编写一个ULUN。

在JavaScript Google Flatbuffers中,如何编写ulong? 我在C++程序中做这件事没有问题,但我一直坚持在JS.< /P>中编写一个ULUN。,javascript,flatbuffers,Javascript,Flatbuffers,如果我使用32位process.hrtime()值,FB没有问题 但是如何将createLong()转换为64位呢 见:[] FB模板文件 使用flatbuffers.Long,下面是一个示例: 遗憾的是,FlatBuffers中没有将一个bigint转换为2个32位值的代码,这很好添加。现在您可能需要自己进行转换。使用flatbuffer.Long,下面是一个示例: 遗憾的是,FlatBuffers中没有将一个bigint转换为2个32位值的代码,这很好添加。现在,您可能需要自己进行转换。您

如果我使用32位process.hrtime()值,FB没有问题

但是如何将createLong()转换为64位呢

见:[]


FB模板文件
使用
flatbuffers.Long
,下面是一个示例:


遗憾的是,FlatBuffers中没有将一个bigint转换为2个32位值的代码,这很好添加。现在您可能需要自己进行转换。

使用
flatbuffer.Long
,下面是一个示例:


遗憾的是,FlatBuffers中没有将一个bigint转换为2个32位值的代码,这很好添加。现在,您可能需要自己进行转换。

您可以使用此函数,它可以很好地用于时间戳

var flatBufferTimeStamp = function(value) {
    var bin = (value).toString(2); 
    var pad = new Array(64 - bin.length + 1 ).join('0'); 
    bin = pad + bin;  
    return {
        low: parseInt(bin.substring(32), 2), 
        high: parseInt(bin.substring(0, 32), 2)
    };
}


var timeStamp = flatBufferTimeStamp(process.hrtime())
let ts = builder.createLong(timeStamp.low, timeStamp.high);
PNT.Telemetry.startTelemetry(builder)
PNT.Telemetry.addSystemTime(builder, ts)

来源:

您可以使用此函数,它可以很好地用于时间戳

var flatBufferTimeStamp = function(value) {
    var bin = (value).toString(2); 
    var pad = new Array(64 - bin.length + 1 ).join('0'); 
    bin = pad + bin;  
    return {
        low: parseInt(bin.substring(32), 2), 
        high: parseInt(bin.substring(0, 32), 2)
    };
}


var timeStamp = flatBufferTimeStamp(process.hrtime())
let ts = builder.createLong(timeStamp.low, timeStamp.high);
PNT.Telemetry.startTelemetry(builder)
PNT.Telemetry.addSystemTime(builder, ts)

来源:

我在mdn上看到的所有bitewise操作符都说它们是32位的。我要补充一个klutz问题,因为我在javascript中没有做过太多bigint()位的旋转(我的经验是35年前用C编写的)。将bigint拆分为两个32位无符号的好方法是什么?对不起,我对JS也不太熟悉。我在mdn看到的所有bitewise操作符都表示它们是32位的。我将添加klutz问题,因为我在javascript中没有做过太多bigint()位的旋转(我的经验是35年前用C编写的)。什么是将bigint拆分为两个32位无符号的有效方法?对不起,对JS也不太熟悉。
var flatBufferTimeStamp = function(value) {
    var bin = (value).toString(2); 
    var pad = new Array(64 - bin.length + 1 ).join('0'); 
    bin = pad + bin;  
    return {
        low: parseInt(bin.substring(32), 2), 
        high: parseInt(bin.substring(0, 32), 2)
    };
}


var timeStamp = flatBufferTimeStamp(process.hrtime())
let ts = builder.createLong(timeStamp.low, timeStamp.high);
PNT.Telemetry.startTelemetry(builder)
PNT.Telemetry.addSystemTime(builder, ts)