我知道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
答案 0 :(得分:1)
这里有一个将十六进制字符串转换为Int64(有符号和无符号)的实现:LINK
该代码返回正确的结果:
javascript: new HexStringToInt64StringConverter(true).convert('a2921f66350ae040') // will return -6732283969128439744 same as BitConverter.ToInt64() in BCL