如何将字符串十六进制表示转换为字节? - javascript

时间:2016-10-05 03:52:16

标签: javascript react-native

我的问题包括字节流或字节数组。 这些

没问题
'\u0000'
'\u0000'
'\u0001'
'\u0010'

但问题在于我解码了一些特殊字符

'\u0000'
'\u0000'
'\u0000'
'�'

从右到左(或从下到上)我可以将这4个字节的数值变为1整数或数字。但我不知道这是否正确

toInt (buff){
    console.log('buff ' , typeof buff[0]);
    for(let b of buff){
        console.log('b' , b);
    }
    return (buff[3] & 0x000000ff  )  |
        (buff[2] & 0x0000ff00  ) << 8  |
        (buff[1] & 0x00ff0000 ) << 16  |
        (buff[0] & 0xff000000 ) << 24 ;
}

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解了您的问题,但听起来您想要将表示十六进制字节的字符串数组转换为数字。

如果您有十六进制数字的字符串表示形式,则可以使用以下内容进行转换:

function bufferToInt(buff) {
    var string = buff.join('');
    return parseInt(string, 16); // parseInt allows specifying a base
}

bufferToInput(['ff', 'ff']); // This returns 65535

假设buff中的每个元素都包含一个十六进制字节的字符串表示,例如&#34; ff&#34;上面应该允许使用主要内置函数简单地转换为数字。