Я пытаюсь преобразовать шестнадцатеричный код в двоичный, принимая текстовый файл, который имеет:
3c011001 34300000 8e080000 20090003 11200004
, но выводит двоичный файл в той же строке:
0011 1100 0000 0001 0001 0000 0000 0001 0011 0100 0011 0000 0000 0000 0000 1000 1000 1110 0000 1000 0000 0000 0000 0000 0010 0000
Хотелось бы вернуть его так:
0011 1100 0000 0001 0001 0000 0000 0001
0011 0100 0011 0000 0000 0000 0000 0000
и т. Д. Для каждой шестнадцатеричной строки.
string hex (string sHex)
{
string sReturn = "";
for (int i = 0; i < sHex.length (); ++i)
{
switch (sHex [i])
{
case '0': sReturn.append ("0000 "); break;
case '1': sReturn.append ("0001 "); break;
case '2': sReturn.append ("0010 "); break;
case '3': sReturn.append ("0011 "); break;
case '4': sReturn.append ("0100 "); break;
case '5': sReturn.append ("0101 "); break;
case '6': sReturn.append ("0110 "); break;
case '7': sReturn.append ("0111 "); break;
case '8': sReturn.append ("1000 "); break;
case '9': sReturn.append ("1001 "); break;
case 'a': sReturn.append ("1010 "); break;
case 'b': sReturn.append ("1011 "); break;
case 'c': sReturn.append ("1100 "); break;
case 'd': sReturn.append ("1101 "); break;
case 'e': sReturn.append ("1110 "); break;
case 'f': sReturn.append ("1111 "); break;
}
}
return sReturn;
}
int main() {
ifstream file;
file.open("MachineCode.txt");
if (!file.is_open())
{
cout << "ERROR";
} else {
stringstream strStream;
strStream << file.rdbuf();
string contents = strStream.str();
cout << hex(contents) << endl;
}
return 0;
}