模拟NodeJS中的C#溢出
我正在尝试将C#代码翻译为nodejs,而且我已经打了一堵墙。 C#中的一个函数使用一个字节来使用BitConverter.toInt64生成3个数字,如下所示:
var hashText = //Generates Hash from an input here using ComputeHash var hashCodeStart = BitConverter.ToInt64(hashText, 0); var hashCodeMedium = BitConverter.ToInt64(hashText, 8); var hashCodeEnd = BitConverter.ToInt64(hashText, 24); //Does other stuff with the three pieces here
作为一个例子,如果我使用数组:
var hash = new Byte[] {0xAA, 0x9B, 0x50, 0xA7, 0x56, 0x8D, 0x2A, 0x99, 0x87, 0xA7, 0x24, 0x10, 0xF8,0x1E, 0xC3, 0xA2, 0xF9, 0x57, 0x1A, 0x2D, 0x69, 0x89, 0x83, 0x91, 0x2D, 0xFA, 0xA5, 0x4A, 0x4E, 0xA2, 0x81, 0x25};
然后,开始,中间和结束的值是:
Start : -7409954833570948182 Middle: -6718492168335087737 End : 2702619708542548525
但是使用NodeJS与biguinut格式的包,我得到了下面的数字(代码如下):
start : 12293508287479753369 middle : 9774821171531793314 end : 17966858020764353425
与以下NodeJS
var hexed = "aa9b50a7568d2a9987a72410f81ec3a2f9571a2d698983912dfaa54a4ea28125" var format = require('biguint-format') console.log(hexed.toUpperCase().slice(0, 16)) console.log("Start is " + format(hexed.toUpperCase().slice(0, 16), 'dec')) console.log(hexed.toUpperCase().slice(16, 32)) console.log("Middle is " + format(hexed.toUpperCase().slice(16, 32), 'dec')) console.log(hexed.toUpperCase().slice(32, 48)) console.log("End is " + format(hexed.toUpperCase().slice(32, 48), 'dec'))
我知道C#的数字由于溢出而出现负数,但问题是溢出似乎发生在int64可以存储的最大值之前。
有没有反正我找出这是什么号码,或者其他任何方式来模仿我的C#代码?
你使用一个string,而不是一个缓冲区和分裂的叮咬,所以你有一个16位数字而不是8个hex值的数组我不知道这是否会有所作为或如果它被转换错误尝试使用文档化的方式
var buffer1 = new Buffer([0xAA, 0x9B, 0x50, 0xA7, 0x56, 0x8D, 0x2A, 0x99, 0x87]); format(buffer1, 'dec', {format:'LE'})
你可能仍然会得到一个uint,所以你需要把它转换为一个signed int
由于@argaz提到BitConverter通常是小端,因此需要LE标志。
- AES在.NET中encryption并使用Node.jsencryption解密?
- Assembly :: GetExecutingAssembly() – > Location现在抛出ArgumentException:path中的非法字符
- SocketIoClientDotNet – Socket.IO客户端库有时会发出两个连续的事件,有时不会
- ./ClientApp/boot.server.ts中的错误找不到模块:错误:无法parsing'./../$$_gendir/ClientApp/app/app.server.module.ngfactory'
- 在nodejs中解密.Net cookie
- 使用节点js中的边来绑定DLL库不成功
- 将通知从Web服务器推送到winforms客户端应用程序
- SignalR客户端应用程序在Mac上
- nodejs中的示例Model-View-Presenter应用程序