【问题标题】: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;
            }
    

    这适用于浏览器并产生相同的结果。可能不像你想的那么简单

    【讨论】:

    • 好的!谢谢!刚刚测试过,它工作正常!
    【解决方案2】:

    const s = '
    【解决方案3】:

    @moudi 的回答让我走上了正确的轨道,所以他应该被接受,但只是为了好玩:

    const stringAsUInt32BE = (x) => [...x].reduce((acc, value) => { acc <<= 8; return acc + value.charCodeAt(0) }, 0)
    
    console.log(stringAsUInt32BE('
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多