为什么 readBigInt64BE 返回一个不等于其原始十六进制值的数字?



我有以下缓冲区:

<Buffer bf 58 e6 c6 00 8f fd 32 84 0f d1 d4 bd 7f ba 95 fa f1 b0 af cf 2a 54 43 49 f5 0f 42 e6 c3 60 e2 a5 1b 05 61 30 3a 75 50 42 60 ff ff 2e 57 d7 1f 8a da ... 269 more bytes>

为什么以下不相等?

0xbf58e6c6008ffd32 //13788023997282124000
Number(buffer.readBigInt64BE(0)) // -4658720076427429000

不出所料,little-endian版本还返回另一个数字:

Number(buffer.readBigInt64LE(0)) // 3674250104503949300

0xbf58e6c6008ffd32被认为是一个无符号int(为什么,我不知道,我也需要弄清楚(,所以我需要读取一个大的无符号64位整数(readBigUInt64BE而不是readBigInt64BE(。

最新更新