将一个小尾数十六进制字符串解析为十进制

时间:2017-05-31 14:41:47

标签: javascript hex endianness

我有一个小的字符串十六进制字符串,需要在JavaScript中转换为十进制。

十六进制字符串示例:“12AB34CD” 要获得正确的值,需要将字节交换为:“CD34AB12”

目前我只是使用substring交换字节,然后使用parseInt()。

I1 C2
I1 C3
I2 C2
I3 C2
I3 C3
I4 C2
I4 C3

我有很多未知长度的数据要解析,所以我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:9)

您可以使用类似的东西来交换字节:



var endian = "12AB34CD";

var r = parseInt('0x'+endian.match(/../g).reverse().join(''));

console.log(r); // Decimal
console.log(r.toString(16).toUpperCase());  // Hex




答案 1 :(得分:0)

我自己想出了这个,但接受的答案要短得多。

var hexstring = "12AB34CD";

function littleEndianHexStringToDecimal(string)
{
    if(!string) return undefined;
    var len = string.length;
    var bigEndianHexString = "0x";
    for(var i = 0; i < len/2; i++)
    {
        bigEndianHexString += string.substring((len-((i+1)*2)),(len-(i*2)));
    }
    return parseInt(bigEndianHexString);
}

console.log(littleEndianHexStringToDecimal(hexstring));