C++ преобразование двоичной строки в десятичную строкуC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 C++ преобразование двоичной строки в десятичную строку

Сообщение Anonymous »

У меня есть двоичная строка, потенциально превышающая 64 бита/символа. Я хотел бы преобразовать его в Base-10, чтобы можно было вывести его на консоль.
Насколько мне известно, C++ не поддерживает целые числа длиной более 64 бит, при этом исключения для конкретных типов компилятора. Следовательно, мне нужно будет преобразовать двоичную строку в строку с основанием 10 (в отличие от целого числа с основанием 10), если я хочу вывести ее на консоль в удобочитаемой форме.
У меня есть следующий код...

Код: Выделить всё

int char_to_int(const char c) {
return ((int) c) - 48;
}

std::string string_addition(std::string s1, std::string s2) {
std::string ret = "";
// making sure the two strings are the same length
while(s1.size() > s2.size())
s2 = '0' + s2;
while (s2.size() > s1.size())
s1 = '0' + s1;

// adding and carrying
for (int32_t i = (int32_t) s1.size(); i >= 0; i--)
ret[i] = (char) ((char_to_int(s1[i]) + char_to_int(s2[i])) + 48);
for (int32_t i = (int32_t) ret.size() - 1; i >= 0; i--)
...
// then finally returning
return ret
}

std::string to_base_ten(const std::string& s) {
std::string ret = "";
for (size_t i = 0; i < s.size(); i++) {
// for each digit, calculate the appropriate number to add
int64_t temp = s[i] * (int) std::pow(2, i);
// performing addition with strings because of potential integer overflow issues
ret = string_addition(ret, std::to_string(temp));
}

return ret;
}
... что становится утомительным и трудным для чтения/понимания из-за преобразования с помощью строк. Есть ли более простые и эффективные способы выполнения этой задачи?


Подробнее здесь: https://stackoverflow.com/questions/781 ... mal-string
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • C++ преобразование двоичной строки в десятичную строку
    Гость » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Гость
  • Рекурсия из двоичной системы в десятичную
    Гость » » в форуме C++
    0 Ответы
    14 Просмотры
    Последнее сообщение Гость
  • Рекурсия из двоичной системы в десятичную
    Anonymous » » в форуме C++
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Преобразование дроби в десятичную в Python
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Преобразование Python из двоичной строки в шестнадцатеричную
    Anonymous » » в форуме Python
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»