【问题标题】:Convert a binary string to big endian integer in the browser?在浏览器中将二进制字符串转换为大端整数?
【发布时间】:2022-12-17 21:48:20
【问题描述】:
我有以下二进制字符串:
const bin = '\x00\x00\x16%'
我想将其转换为大端整数。
我能够使用以下方法做到这一点:
new DataView(Uint8Array.from('\x00\x00\x16%', c => c.charCodeAt(0)).buffer).getInt32(0, false)
=> 5669
但我很确定有一种更简单的方法可以做到这一点,而不是转换为 Uint8Array 然后将其传递给数据视图。
(注意:这仅适用于浏览器,不适用于 Node.js。我看到了所有关于 Buffer.readUIntBE 的 SO 帖子,但它们不是本国的到浏览器。)
【问题讨论】:
标签:
javascript
endianness
【解决方案1】:
function bin2int(bin) {
var i = 0;
var len = bin.length;
var num = 0;
while (i < len) {
num <<= 8;
num += bin.charCodeAt(i);
i++;
}
return num;
}
这适用于浏览器并产生相同的结果。可能不像你想的那么简单
【解决方案3】:
@moudi 的回答让我走上了正确的轨道,所以他应该被接受,但只是为了好玩:
const stringAsUInt32BE = (x) => [...x].reduce((acc, value) => { acc <<= 8; return acc + value.charCodeAt(0) }, 0)
console.log(stringAsUInt32BE('