Russian Qt Forum
Ноябрь 24, 2024, 02:59
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Hex2BIn
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Hex2BIn (Прочитано 5637 раз)
platerx
Гость
Hex2BIn
«
:
Июль 04, 2006, 16:21 »
Извеняюсь за тупой вопрос, я тлько недавно стал осваивать Qt.
А вопрос такой: как средствами Qt hex в bin. Т.е. есть Qstring, в котором находяться hex данные как из этого сделать QByteArray, в котором буддут те же данные, в бинарном виде.
Записан
DenKor
Гость
Hex2BIn
«
Ответ #1 :
Июль 05, 2006, 12:57 »
Как и обычно посимвольно считываешь строку и делаешь подстановку в QByteArray
"0" - 0
...........
"9"-9
"A" - 10
...........
"F" - 15
Записан
platerx
Гость
Hex2BIn
«
Ответ #2 :
Июль 05, 2006, 13:50 »
Я немонго не то имею в виду:
Например есть строка "41424344" из неё надо получить "ABCD", те 41->A, 42->B и т.д.
Сейчас я делаю так:
Код:
for(int i=0;i<hex->size();i+=2)
bin->append((QChar)((hex->mid(i,2)).toUShort(&ok,16)));
Но мне кажется это корявым.
Записан
DmP
Гость
Hex2BIn
«
Ответ #3 :
Июль 05, 2006, 14:34 »
Цитата: "platerx"
Я немонго не то имею в виду:
Например есть строка "41424344" из неё надо получить "ABCD", те 41->A, 42->B и т.д.
Сейчас я делаю так:
Код:
for(int i=0;i<hex->size();i+=2)
bin->append((QChar)((hex->mid(i,2)).toUShort(&ok,16)));
Но мне кажется это корявым.
Так понимаю, если нужно что бы быстро работало, то:
1) bin.resize(hex.size()/2)
2) Получаешь указатели (char*)bin.data(), (const QChar*)hex.constData()
3) Далее перебираешь соответственно оба указателя, преобразуя данные выше указанным способом - *ptr2 = (*(ptr1+1)-'0') * 16 + (*ptr1-'0')
Кажеться так, может где ошибся. =)
Записан
platerx
Гость
Hex2BIn
«
Ответ #4 :
Июль 05, 2006, 15:10 »
2 DmP Спасибо за совет!
Но мне хотелось бы узнать нельзя ли это сдеать "идеалогически правильно", т.е. безо всяких явных преобразование типов, и т.д.
Записан
DmP
Гость
Hex2BIn
«
Ответ #5 :
Июль 05, 2006, 16:07 »
Цитата: "platerx"
2 DmP Спасибо за совет!
Но мне хотелось бы узнать нельзя ли это сдеать "идеалогически правильно", т.е. безо всяких явных преобразование типов, и т.д.
Хочешь, чтоб еще трольтехи за тебя написали процедуру конвертирования?
Записан
DenKor
Гость
Hex2BIn
«
Ответ #6 :
Июль 05, 2006, 20:10 »
Цитата: "platerx"
Я немонго не то имею в виду:
Например есть строка "41424344" из неё надо получить "ABCD", те 41->A, 42->B и т.д.
Сейчас я делаю так:
Код:
for(int i=0;i<hex->size();i+=2)
bin->append((QChar)((hex->mid(i,2)).toUShort(&ok,16)));
Но мне кажется это корявым.
Фраза насчте идеалогии... :shock:
Самый простой способ это табличный способ.
mas[0xff]={}, где для каждого возможного элемента (их 255), содержимое элемента его буквенный символ.
Смотри например реализацию QTextCodec, можешь даже для этого случая свою кодировку описать - это 100% идеалогически правильно
Записан
platerx
Гость
Hex2BIn
«
Ответ #7 :
Июль 06, 2006, 13:16 »
Понятно. Просто я думал, что в Qt есть что-нть готовое.
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...