在javascript中将字节数组转换为带符号的int64

时间:2015-02-20 07:27:50

标签: javascript arrays binary bignum int64

我知道js中没有int64数据类型。但我需要将一个字节数组转换为一个带符号的int64,以获得与.NET类库中的BitConverter.ToInt64()方法相同的结果。在javascript(BigInt.js)中有一个大整数的实现,它接受十六进制作为输入并获得一个bigInt作为输出,但结果与BCL中的BitConverter.ToInt64()不同。 示例:

BitConverter.ToInt64() for '0x40e00a35661f92a2' will result in -6732283969128439744

我需要一个在java脚本中执行此操作的解决方案,性能不是问题。

编辑:

按正常顺序将数据输入BigInt.js:

javascript: new BigInt('0x40e00a35661f92a2')// shows 4674747637673464482

以相反的顺序将数据输入BigInt.js:

javascript: new BigInt('0xa2921f66350ae040')// shows 11714460104581111872

既不匹配BitConverter.ToInt64()结果:

C SHARP: BitConverter.ToInt64(new byte[] { 0x40, 0xe0, 0x0a, 0x35, 0x66, 0x1f, 0x92, 0xa2 }, 0); // shows -6732283969128439744

1 个答案:

答案 0 :(得分:1)

这里有一个将十六进制字符串转换为Int64(有符号和无符号)的实现:LINK

该代码返回正确的结果:

javascript: new HexStringToInt64StringConverter(true).convert('a2921f66350ae040') // will return -6732283969128439744 same as BitConverter.ToInt64() in BCL