parseInt() 不考虑前导零,即使使用基数也是如此

parseInt() doesn't regard leading zeros, even with radix

本文关键字:不考虑 parseInt      更新时间:2023-09-26

当我想将二进制字符串转换为以 10 为基数的十进制时(像这样:parseInt('0001010', 2) ),Javascript 返回一个十进制数,但上面示例中提到的前导零已被忽略的版本。有什么办法可以解决这个问题吗?

假设你有数字"00000101101101":

var number = '00000101101101';
var length = number.length;
var decimal_number = parseInt(number, 2);
// going back
var new_number = decimal_number.toString(2);
var new_length = new_number.length;
var n_zeros = length - new_length;
var zeros = (n_zeros >= 2 ? Array(n_zeros+1).join("0") : "0");
new_number = zeros + new_number;

十进制表示无法跟踪前导零。如果您希望在结果中保留前导零,则需要一种根本不同的方法(例如,将输出保留为字符串)。

或者,如果您先验地知道结果的宽度,则可以在输出上用前导零填充它。

相关文章: