我有一个二进制字符串,我想将其转换为字符串格式。这是功能
let stringConversion = (n) => {
let convertToString = n.toString();
console.log(convertToString);
};
stringConversion(00000000000000000000000000001011);
我想要的输出是“ 00000000000000000000000000001011”,但它给了我“ 521”
在JS中,以a开头0
且不包含a的数字令牌9
以八进制为基础读取。因此,解释器将您的号码转换为贴花底数,您将获得另一个号码:01011 => (1011)8 = (521)10
。
如果令牌统计信息0b
也被读为二进制字符串,那么您可以将其附加到您的数字:上0b1011 => (1011)2 = (11)10
。
现在,如果您要转换位字符串,那么实际上它实际上应该是字符串。你应该做类似的事情stringConversion('00000000000000000000000000001011');
我写了一些代码,可以帮助您找到正确的方法将二进制字符串编码/解码为UNSIGNED(理论上)无穷大。如果要保留符号,则应为二进制字符串提供更多信息,例如固定长度或假装第一位是符号。
function binary2number(bitStr) {
// initialize the result to 0
let result = 0;
for (let bit of bitStr) {
// shift the current result one bit to the left
result <<= 1;
// adding the current bit
result += !!parseInt(bit);
}
return result;
};
function number2binary(num, minBitLength=0) {
// converting the number to a string in base 2
let result = num.toString(2)
// concatenate the missing '0' up to minBitLength
while (result.length < minBitLength) {
result = '0' + result;
}
return result;
}
console.log('00000000000000000000000000001011 (in 8 base) is interpreted as' ,
00000000000000000000000000001011, '(in 10 base)');
console.log('00000000000000000000000000001011 =>',
binary2number('00000000000000000000000000001011'));
console.log('11 =>', number2binary(11, 32), '(32 bits = unsigned int commonly)');
console.log('11 =>', number2binary(11), '(for short)');
现在,这是表示二进制整数的常规方法,但是如果您的位字符串应表示不同的内容,例如浮点数,则代码将发生巨大变化。您还可以定义自己的方式来解析该字符串。还有许多基本的假设,这些假设我将不涉及(例如endian和其他有限的内存表示形式的东西)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句