我正在尝试将二进制字符串转换为整数并在javascript中再次返回(大多数情况下,我可以通过网络更有效地移动我的二进制数组)。只有我有问题。看来,在来回转换64位阵列时,我失去了一些位。
我的转化功能如下:
Utils = {
dec2bin: function(dec, size) {
return (dec).toString(2);
},
bin2dec: function(str) {
return parseInt(str, 2);
}
}
这似乎是小规模的......
Utils.bin2dec('101');
// 5
Utils.dec2bin(5);
// '101'
但是,当我开始查看一个更长的整数时,最后几个正位似乎消失了:
var start = '1000000101000010001001000001100000011000001001000100001010000001';
var integer = Utils.bin2dec(start);
var end = Utils.dec2bin(integer);
console.log(start)
console.log(end)
上面的代码导致:
1000000101000010001001000001100000011000001001000100001010000001
1000000101000010001001000001100000011000001001000100000000000000
注意到最后我的所有1都是0。
如果我删除少数几个正位,那么结尾似乎保持其完整性......
0000000000000010001001000001100000011000001001000100001010000001
10001001000001100000011000001001000100001010000001
(我可以轻松填写前几个0)
所以问题是这个。我可以在Javascript中将64位存储在一个整数中吗?怎么样?
或者,如何使用多个整数进行此往返?