Если вы хотите сделать это без запятых
[3546,-24,99999,3322]
==> "00000ddaffffffe80001869f00000cfa"
, то вы можете создать строку, используя 8 шестнадцатеричных цифр для каждого числа.Конечно, вам придется набирать числа с нуля, которые короче 8 шестнадцатеричных цифр.И вам нужно убедиться, что числа закодированы с twos-compment , чтобы правильно обрабатывать любые отрицательные значения.
Вот как это сделать:
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]
вот jsFiddle , который показывает приведенный выше пример.