编辑:http://www.ascii-code.com/我将BIN列视为二进制,但我显然遗漏了一些东西..
为什么二进制转换对我不起作用?
小写字母b是字符代码98
console.log((98).toString(2));
输出
1100010
当输出长度为8时,输出长度为7
一个字节是8位!!?
修改
比特组构成字节当8比特组合在一起时,它被称为字节。字节是计算机用来表示各种字符的字节,例如键盘上显示的字符。
引自:http://wordsmuggler.com/Learn/Binary
我现在真的不明白我应该读什么。如果我在谷歌上看到我总是被告知8但在这里我被告知不同。请解释,因为我不明白我应该理解什么
答案 0 :(得分:12)
.toString(2)
不产生数字的8位表示的原因是toString
适用于多于0到255的数字。例如:
(1).toString(2) ==> "1"
(2).toString(2) ==> "10"
(3).toString(2) ==> "11"
(4).toString(2) ==> "100"
(25).toString(2) ==> "11001"
(934534534).toString(2) => "110111101100111101110110000110"
因此,JavaScript对toString(2)
所做的只是简单地给出基数2中的数字,即0,1,10,11,100,101等,就像我们编写数字的基数10一样0,1,2,3,4,5,...我们并不总是填写我们的数字来制作一定数量的数字。这就是为什么你没有在输出中看到8个二进制数字。
现在,您遇到的问题是“我如何获取0..255范围内的数字并在JavaScript中将其显示为二进制编码的BYTE?事实证明,需要程序员完成;它不是JavaScript中的内置操作!在base-2中编写一个数字,写一个8位是相关的问题,但它们是不同的。
要做你想做的事,你可以写一个函数:
function byteString(n) {
if (n < 0 || n > 255 || n % 1 !== 0) {
throw new Error(n + " does not fit in a byte");
}
return ("000000000" + n.toString(2)).substr(-8)
}
以下是它的使用方法:
> byteString(-4)
Error: -4 does not fit in a byte
> byteString(0)
'00000000'
> byteString(7)
'00000111'
> byteString(255)
'11111111'
> byteString(256)
Error: 256 does not fit in a byte
答案 1 :(得分:0)
这是另一种解决方案:
test = "11001";
while(test.length<7){
test="0"+test;
}
它像这样单行工作:
while(test.length<7)test="0"+test