javascript - 如何在javascript中将整数数组转换为十六进制字符串,反之亦然

标签 javascript arrays string tostring parseint

我在 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/

相关文章:

javascript - 从对象函数内部获取函数

php - 比较两个关联数组的键顺序

php - 将数组从 php 传递到 javascript

Xcode 错误 : failed to launch [directory] -- invalid host string: 'localhost'

javascript - 如何使用javascript隐藏ul标签内的div标签

javascript - 在 Nodejs 中解码相同的 base64 字符串会产生不同的结果

javascript - 从后面的代码触发 javascript;按钮触发 js 代码,RegisterStartupScript 不会

cocoa - 通过 socket 将数组 Controller 链接到 XCode 中的数组

python - 使用 ctypes 从 C++ 函数返回字符串给出大的 int,而不是 char 指针

javascript - 如何在具有多个变量的模板文字中使用三元运算符