我有一个小的字符串十六进制字符串,需要在JavaScript中转换为十进制。
十六进制字符串示例:“12AB34CD” 要获得正确的值,需要将字节交换为:“CD34AB12”
目前我只是使用substring交换字节,然后使用parseInt()。
I1 C2
I1 C3
I2 C2
I3 C2
I3 C3
I4 C2
I4 C3
我有很多未知长度的数据要解析,所以我想知道是否有更好的方法。
答案 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));