Добрый день. Делаю hex-редактор. Сделал функцию, которая преобразует двоичное число char в шестнадцатеричное, и записывает в QString. Запустил. Какие-то байты правильно показывает, а какие-то неправильно. Сделал дебаг. Оказалось, что некоторые байты записываются в char с отрицательным знаком
. Что с этим делать ?
Вот функция, переводящая полученный байт в Hex.
C++ (Qt)
QString byteToHex(char b)
{
QString str;
switch(b/16)
{
case 0: str="0"; break;
case 1: str="1"; break;
case 2: str="2"; break;
case 3: str="3"; break;
case 4: str="4"; break;
case 5: str="5"; break;
case 6: str="6"; break;
case 7: str="7"; break;
case 8: str="8"; break;
case 9: str="9"; break;
case 10: str="A"; break;
case 11: str="B"; break;
case 12: str="C"; break;
case 13: str="D"; break;
case 14: str="E"; break;
case 15: str="F"; break;
}
switch(b%16)
{
case 0: str+="0"; break;
case 1: str+="1"; break;
case 2: str+="2"; break;
case 3: str+="3"; break;
case 4: str+="4"; break;
case 5: str+="5"; break;
case 6: str+="6"; break;
case 7: str+="7"; break;
case 8: str+="8"; break;
case 9: str+="9"; break;
case 10: str+="A"; break;
case 11: str+="B"; break;
case 12: str+="C"; break;
case 13: str+="D"; break;
case 14: str+="E"; break;
case 15: str+="F"; break;
}
str+=" ";
return str;
}
Вот функция открывающая файл.
C++ (Qt)
void MyWidget::MyOpenClick()
{
fileName = QFileDialog::getOpenFileName(this, tr("Open file"), "C:\\", tr("Any files (*)"));
if(fileName!="")
{
QFile file(fileName);
file.open(QIODevice::ReadOnly);
QDataStream text(&file);
char b;
QString str;
while(text.readRawData(&b, 1))
str+=byteToHex(b);
ui->plainTextEdit->setPlainText(str);
}
}