Я сделал программу для преобразования баз чисел.Я подумал, что в случае, если в выводе нет символов A-F
, было бы удобно возвращать число в виде числа вместо строки (даже если бы я возвращал числа с основанием 2 как обычные десятичные числа,без разницы).
По какой-то причине, когда я конвертировал A3B2
32 в двоичный файл (который должен быть 1010000110101100100
2 [ Wolfram | Alpha source]) Я получил 1010000110101100200
.Там есть два, это не бинарный!Последняя строка кода, которая возвращает значение:
return (toBase <= 10) ? Number(result) : result;
Это работало корректно практически для всех тестов, пока я не решил использовать это число base-32 выше.Я думал, что моя программа неправильно выполняла шаг деления / остатка, поэтому я распечатал результат непосредственно перед тем, как он возвращает значение.Это было правильно выдавать 1010000110101100100
.Итак, я протестировал метод Number()
прямо в консоли Chrome.Вот что произошло:
> Number("1010000110101100100")
> 1010000110101100200
Не понимаю ли я, что делает метод Number()
?Почему он преобразует строку, состоящую из всех единиц и нулей, в число с единицами, нулями и Twos ?