Десятичное число от символа * до двоичного - PullRequest
3 голосов
/ 30 января 2012

У меня есть строка, которая состоит из некоторого десятичного значения, с количеством цифр может быть больше, чем могут содержать любые существующие типы int (я знаю количество цифр). Дайте мне несколько советов, пожалуйста, как я могу преобразовать это число в его двоичное представление (поэтому у меня будет другая переменная char *, которая будет состоять из двоичного кода).

Ответы [ 3 ]

4 голосов
/ 30 января 2012

Вы можете использовать что-то вроде библиотеки GNU Multiple Precision, которая поддерживает очень длинные числа.

3 голосов
/ 30 января 2012

Вам понадобится пользовательская BigInt библиотека. GMP будет хорошим выбором.

2 голосов
/ 30 января 2012

Просто несколько подсказок (если вы хотите реализовать это вручную).

Я сделал это (домашнее задание) следующим образом:

  1. Я использовал массив без знака int для хранения бита, представляющего число (с использованием представления дополнения до двух).
  2. Я реализовал операции сдвига и сложения в этом массиве (с той же семантикой классического типа интегралов).
  3. Поскольку вы можете выразить число суммой произведений, я использовал алгоритм shift и add (как показано на этом post ). Вы можете использовать положение одного символа в строке, чтобы сгенерировать правильное двоичное представление.

(Я не знаю, есть ли лучшие или более быстрые решения.) Я не буду публиковать код, таким образом, вы можете наслаждаться этим сами;)

...