请问有人能给我一些建议吗?
我有一个字符串,例如"01001011",我需要将其反转,因此我使用了.split('')
然后使用 .reverse()
,现在我需要将数组作为字符串读取并将其转换为整数。这是可能的吗?
谢谢
请问有人能给我一些建议吗?
我有一个字符串,例如"01001011",我需要将其反转,因此我使用了.split('')
然后使用 .reverse()
,现在我需要将数组作为字符串读取并将其转换为整数。这是可能的吗?
谢谢
join()
函数(MDN);如果要将字符串转换为整数,请使用parseInt()
函数(MDN)。后者的第二个参数是可选的进制数。var a = '01001011';
var b = parseInt( a.split('').reverse().join(''), 2 );
或者(如果您想转换起始字符串而不进行反转):var b = parseInt( a, 2 );
只需使用不同的基数调用 parseInt
函数,对于二进制,使用基数 2。
var a = parseInt("01001011", 2);
// a === 75
parseInt
函数在您未明确指定进制时会尝试自行确定。根据Mozilla开发者网络所述:
如果进制数
radix
为undefined
或0,则JavaScript假设以下内容:
- 如果输入的
string
以"0x"或"0X"开头,则进制数为16(十六进制)。- 如果输入的
string
以"0"开头,则进制数为8(八进制)。此功能是非标准的,并且某些实现故意不支持它(而是使用进制数10)。因此,在使用parseInt
时始终指定进制数。- 如果输入的
string
以其他任何值开头,则进制数为10(十进制)。
在这种情况下,必须明确指定进制数,否则它可能被解释为十进制或八进制数。作为一个经验法则,请始终指定进制数。
for(){}
迭代 buffer,然后在内部执行以下操作:
(210).toString(2); // '11010010'
(210).toString(16); // 'd2' (未经测试)
(210).toString(8); // (八进制数字表示法)
parseInt((210).toString(2), 2); // 210
parseInt((210).toString(2), 2).toString(16); // 'd2'
显然,您应该在 FOR 循环中使用 "(buffer[i]).toString(2)
" 而不是 "(210).toString(2)
"。parseInt(('00000' + (210).toString(2).substring(5, 8)), 2); // 2
parseInt((210).toString(2).substring(5, 8), 2); // 2