我在 javascript 中有 32 位整数数组。 如何将其转换为十六进制字符串 并在需要时再次从该十六进制字符串构建相同的 32 位整数数组?
hexString = yourNumber.toString(16); 可用于将数字转换为十六进制 但是当数字数组转换为十六进制字符串(它将是连续的或由某个字符分隔)时,我如何从该字符串中取回数字数组?
最佳答案
如果你想不加逗号
[3546,-24,99999,3322]
==> "00000ddaffffffe80001869f00000cfa"
然后您可以为每个数字使用 8 个十六进制数字来构建字符串。当然,您必须对短于 8 个十六进制数字的数字进行零填充。并且您必须确保数字使用 twos-compliment 编码正确处理任何负值。
方法如下:
var a = [3546,-24,99999,3322];
alert("Original is " + JSON.stringify(a)); // [3546,-24,99999,3322]
// convert to hex string...
//
var b = a.map(function (x) {
x = x + 0xFFFFFFFF + 1; // twos complement
x = x.toString(16); // to hex
x = ("00000000"+x).substr(-8); // zero-pad to 8-digits
return x
}).join('');
alert("Hex string " + b); // 00000ddaffffffe80001869f00000cfa
// convert from hex string back to array of ints
//
c = [];
while( b.length ) {
var x = b.substr(0,8);
x = parseInt(x,16); // hex string to int
x = (x + 0xFFFFFFFF + 1) & 0xFFFFFFFF; // twos complement
c.push(x);
b = b.substr(8);
}
alert("Converted back: " + JSON.stringify(c)); // [3546,-24,99999,3322]
here's a jsFiddle显示了上面的示例。
关于javascript - 如何在javascript中将整数数组转换为十六进制字符串,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670359/