Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ BinToHex преобразовани

Автор: smirnoffx 18.5.2011, 18:33

Доброго всем времени суток.

Столкнулся с такой проблемой:
Есть некий файл в котором записано число в двоичном формате, т.е. если в посмотреть в шестнадцатеричном виде будет, например, или 03, что соответствует числам 12 и 3 соответственно.
Я читаю файл так:

QFile file(filename);
if(file.open(QIODevice::ReadOnly))
       {
         char kol[1];
         QDataStream in(&file);

         in.readRawData(kol, 1);
...


Соответственно в col имеем абракадабру.
Вопрос: как преобразовать абракадабру в число (тип int или QString)?

P.S. Есть аналогичное решение, реализованное в Borland C++ Builder 6:
h = CreateFile(filename, GENERIC_READ, 0, 0, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL);

ReadFile(h, &_kss, 4, &t, NULL);
char ttt[8] = "";
BinToHex(_kss, ttt, 8);
double hex = 0;
hex = StrToInt("0x" + String(ttt, 8));
ts3->Add(FloatToStr(hex/1000000));


Соответственно ts3 это что-то типа StringList, в строки которого добавляются значения.

К сожалению в Qt нет функции BinToHex (я не нашел). Возможно ли реализовать подобное средствами Qt и как?

Всем спасибо за дискуссию и ответы.

Автор: silver47 18.5.2011, 18:56

QByteArray имеет метод toHex. Но вот как в него запихнуть двоичные данные с ходу не скажу. Документации под рукой нет.

Автор: smirnoffx 18.5.2011, 19:11

Спасибо всем. После долгих мучений решил так:

int i_kol = QString(QString(kol[0])).toAscii().toHex().toInt();

Автор: Litkevich Yuriy 19.5.2011, 6:01

Цитата(smirnoffx @ 18.5.2011, 21:33) *
К сожалению в Qt нет функции BinToHex (я не нашел)
дык в Qt она и не нужна

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)