Я хочу иметь в качестве входных данных указатель на число в базе от 2 до 16 и в качестве второго параметра, в какую базу входит число, а затем преобразовать его в представление в базе 2. Целое число может быть произвольной длины. Мое решение теперь делает то же, что и функция atoi (), но мне было любопытно, просто из академического интереса, возможно ли решение для таблицы поиска.
Я обнаружил, что это просто для двоичного, восьмеричного и шестнадцатеричного. Я могу просто использовать таблицу поиска для каждой цифры, чтобы получить серию битов. Например:
0xF1E ---> (F = 1111) (1 = 0001) (E = 1110) ---> 111100011110
0766 ---> (7 = 111) (6 = 110) (6 = 110) ---> 111110110
1000 ---> ??? ---> 1111101000
Однако моя проблема в том, что я хочу использовать этот метод поиска таблиц для нечетных баз, например, для базы 10. Я знаю, что мог бы написать алгоритм, как это делает atoi, и сделать несколько умножений и сложений, но для этого конкретного Я пытаюсь понять, смогу ли я сделать это с помощью справочной таблицы. Впрочем, с базой 10 это явно не так очевидно. Мне было любопытно, есть ли у кого-нибудь умный способ выяснить, как сгенерировать общую справочную таблицу для Base X -> Base 2. Я знаю, что для базы 10 вы не можете просто дать ей одну цифру за раз, поэтому Решение, вероятно, придется искать группу цифр за раз.
Мне известно о решении для умножения и сложения, но поскольку это числа произвольной длины, операции умножения и сложения не являются свободными, поэтому я бы хотел их избежать, если это вообще возможно.