crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> BinToHex преобразовани
smirnoffx
  опции профиля:
сообщение 18.5.2011, 18:33
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 6.11.2010
Пользователь №: 2173

Спасибо сказали: 0 раз(а)




Репутация:   0  


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

Столкнулся с такой проблемой:
Есть некий файл в котором записано число в двоичном формате, т.е. если в посмотреть в шестнадцатеричном виде будет, например, или 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
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


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

Сообщение отредактировал silver47 - 18.5.2011, 18:59
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
smirnoffx
  опции профиля:
сообщение 18.5.2011, 19:11
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 9
Регистрация: 6.11.2010
Пользователь №: 2173

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо всем. После долгих мучений решил так:
int i_kol = QString(QString(kol[0])).toAscii().toHex().toInt();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 19.5.2011, 6:01
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(smirnoffx @ 18.5.2011, 21:33) *
К сожалению в Qt нет функции BinToHex (я не нашел)
дык в Qt она и не нужна
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 13:13