十六进制字符串到INT32-小端(DCBA格式)Javascript

十六进制字符串到INT32-小端(DCBA格式)Javascript,javascript,node.js,encryption,decode,Javascript,Node.js,Encryption,Decode,在没有任何信息的可怜文档上实现一些东西 这个例子就是这样 (7F02AAF7)H => (F7AA027F)H = -139853185 假设即使我将7F02AAF7转换为F7AA027F,仍然通过 'parseInt('F7AA027F',16)与我期望的不同 我在谷歌上搜索了一下,找到了这个网站 在这里,当您输入7F02AAF7时,它将在INT32-小端点(DCBA)系统下被处理为通缉号码。我试过这个搜索词,但没有成功。 你能告诉我我在这里应该做什么吗?有没有node.js库可以帮我

在没有任何信息的可怜文档上实现一些东西

这个例子就是这样

(7F02AAF7)H => (F7AA027F)H = -139853185
假设即使我将
7F02AAF7
转换为
F7AA027F
,仍然通过
'parseInt('F7AA027F',16)
与我期望的不同

我在谷歌上搜索了一下,找到了这个网站

在这里,当您输入
7F02AAF7
时,它将在
INT32-小端点(DCBA)
系统下被处理为通缉号码。我试过这个搜索词,但没有成功。
你能告诉我我在这里应该做什么吗?有没有node.js库可以帮我解决这个问题

您可以使用littleEndian和一个指示符对给定字节进行调整和使用

var数据='7F02AAF7'。匹配(/../g);
//创建缓冲区
var buf=新阵列缓冲(4);
//创建它的数据视图
var视图=新数据视图(buf);
//设置字节
data.forEach(函数(b,i){
视图.setUint8(i,parseInt(b,16));
});
//获取一个带有小endian的int32
var num=view.getInt32(0,1);

console.log(num)节点可以非常轻松地使用:


JavaScript整数通常存储为:

4.3.19
与双精度64位二进制格式IEEE 754值相对应的原语值

因此,
parseInt
的结果是一个浮点,其中值无损地适合浮点的小数部分(52位容量)
parseInt
也不会将其解析为两个补码表示法

如果您想强制将读取的任何内容转换为32位,那么最简单的方法是通过应用二进制操作强制将其自动转换为32位。我建议:

parseInt("F7AA027F", 16) | 0
带0的二进制OR(
|
)本质上是一个no-op,但它将任何整数转换为32位。这一技巧通常用于将数字转换为32位,以加快计算速度


此外,这是可移植的。

“与我期望的不同”-您期望的是什么以及为什么?我期望的是十进制值
-139853185
?因为在js中,人们通常使用十六进制到十进制@ArtjomB我也试过endian交换。这也不起作用:lt
parseInt()
函数无法识别前导的
F
表示数字为负数。没有前导“-”将产生正值。该死。。。其他任何地方都适用谢谢你的解释,谢谢你,罗伯特。
parseInt("F7AA027F", 16) | 0