Russian Qt Forum
Сентябрь 30, 2024, 20:19
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
QString + коды ASCII
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QString + коды ASCII (Прочитано 14100 раз)
BuRn
Гость
QString + коды ASCII
«
:
Ноябрь 03, 2011, 18:18 »
Вообщем хотелось бы узнать, на данный момент работаю с кассовым аппартом и на нем что бы напечатать строку, какую-либо, нужно ее перегнать в коды ASCII т.е. к примеру вот
x90\xA5\xA6\x2E\x20\xAF\xA5\xE7\x2E\x20\x20\x20\x20\x20\x20\x20\x20\x20
если честно не помню что за строка, но смысл я думаю ясен, чем можно перегонять строку , т.е. к примеру получить из QString str = "Hello" ; строку вида которого я привел выше
Спасибо
Записан
BRE
Гость
Re: QString + коды ASCII
«
Ответ #1 :
Ноябрь 03, 2011, 18:20 »
QByteArray QString::toAscii () const
Записан
BuRn
Гость
Re: QString + коды ASCII
«
Ответ #2 :
Ноябрь 03, 2011, 18:30 »
т.е. что-то типа
QString str = "Hello";
QbyteArray str1 = str.toAscii();
?
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: QString + коды ASCII
«
Ответ #3 :
Ноябрь 04, 2011, 04:42 »
прямой функции нет. Либо вручную проходись по элементам массива и преобразуй каждый символ в нужный hex, и записывай результат в другую строку. Или используй QByteArray("hello").toHex(), но после этого тоже придётся самому вставлять дополнительные символы \x
Записан
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #4 :
Ноябрь 04, 2011, 12:10 »
Цитата: BRE от Ноябрь 03, 2011, 18:20
QByteArray QString::toAscii () const
Эта функция не переводит QString в ASCII. Смотри третий абзац описания в ассистенте.
Она просто преобразует QString в QByteArray.
Записан
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #5 :
Ноябрь 04, 2011, 12:18 »
Всвязи с этим я так с ходу не понял как преобразовать к ASCII.
Пример:
Условие задачи. Исходники
в кодировке UTF-8
.
Пишу в коде
Код
C++ (Qt)
QString
str
=
"test"
;
получаю по два байта на каждый символ итого 10 байт (плюс ноль в конце. или 9? не суть.).
Хочу получить в виде ASCII.
Код
C++ (Qt)
QByteArray
ba
=
str.
toAscii
(
)
;
Дает мне массив из тех же 10 (или 9) байт!
Записан
BRE
Гость
Re: QString + коды ASCII
«
Ответ #6 :
Ноябрь 04, 2011, 12:50 »
Я написал имя метода, читая описание которого (вместе с see also), можно со всем разобраться.
Ключевая фраза как раз во втором абзаце и ведет она к QTextCodec. Если кодек для сишных строк устанавливался (а многие его для чего-то устанавливают), то будет происходить преобразование. А если еще внимательно почитать про QTextCodec, то вообще все вопросы связанные с кодировками отпадут.
Записан
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #7 :
Ноябрь 04, 2011, 13:18 »
Грамотно съехал? )
Я понял. Т.е. из UTF-8 строки можно получить либо строку в кодировке CP1251 либо KOI8-R к примеру, которые являются однобайтовыми.
У QTextCodec нет кодировки ASCII в списке поддерживаемых.
А Latin-1 это и есть ASCII?
Записан
LisandreL
Птица говорун
Offline
Сообщений: 984
Надо улыбаться
Re: QString + коды ASCII
«
Ответ #8 :
Ноябрь 04, 2011, 14:25 »
Цитата: andrew.k от Ноябрь 04, 2011, 12:18
в кодировке UTF-8
Дает мне массив из тех же 10 (или 9) байт!
Очень странно. "test" в utf-8 должен занимать 4 байта.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4744
Re: QString + коды ASCII
«
Ответ #9 :
Ноябрь 04, 2011, 14:33 »
Цитата: andrew.k от Ноябрь 04, 2011, 13:18
А Latin-1 это и есть ASCII?
Цитата: QString::toAscii()
If a codec has been set using QTextCodec::setCodecForCStrings(), it is used to convert Unicode to 8-bit char; otherwise this function does the same as toLatin1().
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #10 :
Ноябрь 04, 2011, 14:59 »
Цитата: LisandreL от Ноябрь 04, 2011, 14:25
Цитата: andrew.k от Ноябрь 04, 2011, 12:18
в кодировке UTF-8
Дает мне массив из тех же 10 (или 9) байт!
Очень странно. "test" в utf-8 должен занимать 4 байта.
Да, я не совсем корректно написал. QString хранит в юникоде, поэтому массив получается по два байта на символ.
Записан
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #11 :
Ноябрь 04, 2011, 15:02 »
Цитата: kambala от Ноябрь 04, 2011, 14:33
Цитата: andrew.k от Ноябрь 04, 2011, 13:18
А Latin-1 это и есть ASCII?
Цитата: QString::toAscii()
If a codec has been set using QTextCodec::setCodecForCStrings(), it is used to convert Unicode to 8-bit char; otherwise this function does the same as toLatin1().
Note that, despite the name, this function does not necessarily return an US-ASCII (ANSI X3.4-1986) string and its result may not be US-ASCII compatible.
Это означает, что latin1 и ASCII разные кодировки?
Записан
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #12 :
Ноябрь 04, 2011, 15:07 »
Почитал на википедии про эти кодировки. Понял различие.
В общем пример, который я приводил, у меня был на днях.
В общем toAscii() возвращала двухбайтовое представление строки.
Записан
BuRn
Гость
Re: QString + коды ASCII
«
Ответ #13 :
Ноябрь 05, 2011, 18:33 »
кому интересно , реализовал
Записан
andrew.k
Гость
Re: QString + коды ASCII
«
Ответ #14 :
Ноябрь 05, 2011, 19:07 »
что именно?
выкладывай.
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...