Преобразование строки, представляющей двоичный файл, в строку, представляющую эквивалентный шестнадцатеричный код - PullRequest
0 голосов
/ 12 апреля 2011

Итак, у меня есть строка x = "10101", и мне нужно поместить в любую строку y шестнадцатеричное значение двоичного файла в x.Так что если x="10101", то y="0x15"

Ответы [ 3 ]

4 голосов
/ 12 апреля 2011

Самый простой способ сделать это - использовать [bitset] [1]:

#include <iostream>
#include <string>
#include <bitset>

using namespace std;
int main(){
    string binary_str("11001111");
    bitset<8> set(binary_str);  
    cout << hex << set.to_ulong() << endl;
}

Но я читал, что это не самый эффективный способ ... Зависит от того, что вы хотите.Помните, что преждевременная оптимизация - корень всего зла .

1 голос
/ 12 апреля 2011

Вам, вероятно, следует использовать функцию strtol (http://en.wikipedia.org/wiki/Strtol) с основанием 2 для преобразования x в целое число, а затем использовать sprintf для форматирования строки результата.

0 голосов
/ 12 апреля 2011

Я не хочу предоставлять вам полный ответ.

Тем не менее, основная идея должна состоять в том, чтобы заполнить начало строки максимум тремя нулями, чтобы вы могли разбить строку на подстрокис длиной 4. Затем его можно легко превратить в гекс различными способами, самым простым из которых является использование оператора switch.Там будет только 16 случаев "

...