Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: mqter от Июнь 12, 2010, 21:20



Название: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 21:20
Как из двух char cделать один QChar?


Название: Re: Как из двух char cделать один QChar?
Отправлено: SimpleSunny от Июнь 12, 2010, 22:19
А что это за char? Младший и старший байт?

Потому что не совсем понятно, как из двух символов сделать один.


Название: Re: Как из двух char cделать один QChar?
Отправлено: Sancho_s_rancho от Июнь 12, 2010, 23:09
Как из двух char cделать один QChar?
Видимо День России не прошел мимо вас. Даже немножко завидно.

Возможно вы хотите что-то типа этого
Код:
QString	QTextCodec::toUnicode ( const char * input, int size, ConverterState * state = 0 ) const
, но скорее всего ваше желание связано с непониманием происходящего.
пи.си. не все символы в unicode 16bit кодируются 2-мя байтами, насколько я помню


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 23:12
А что это за char? Младший и старший байт?

Потому что не совсем понятно, как из двух символов сделать один.

да, младший и старший байт. QChar как я понял двубайтовый, а char - один байт.
как соединить их?


Название: Re: Как из двух char cделать один QChar?
Отправлено: Sancho_s_rancho от Июнь 12, 2010, 23:14
А что это за char? Младший и старший байт?

Потому что не совсем понятно, как из двух символов сделать один.

да, младший и старший байт. QChar как я понял двубайтовый, а char - один байт.
как соединить их?
Не все символы в unicode 16bit кодируются 2-мя байтами, насколько я помню


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 23:16
А что это за char? Младший и старший байт?

Потому что не совсем понятно, как из двух символов сделать один.

да, младший и старший байт. QChar как я понял двубайтовый, а char - один байт.
как соединить их?
Не все символы в unicode 16bit кодируются 2-мя байтами, насколько я помню


Ну вроде UTF-8 не используется для QChar


Название: Re: Как из двух char cделать один QChar?
Отправлено: Sancho_s_rancho от Июнь 12, 2010, 23:18
Для QChar используется 16bit Unicode, а он использует для разных символов разное кол-во байт.
Цитировать
UTF-16 (англ. Unicode Transformation Format) в информатике — один из способов кодирования символов из Unicode в виде последовательности 16-битных слов. Символы с кодами меньше 0x10000 (216) представляются как есть, а символы с кодами 0x10000—0x10FFFF — в виде последовательности двух 16-битных слов


Название: Re: Как из двух char cделать один QChar?
Отправлено: Sancho_s_rancho от Июнь 12, 2010, 23:19
Короче говоря 1 символ как нефиг делать может занимать 4 байта. Вот такие пирожки с котятками.


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 23:20
Как из двух char cделать один QChar?
Видимо День России не прошел мимо вас. Даже немножко завидно.

Возможно вы хотите что-то типа этого
Код:
QString	QTextCodec::toUnicode ( const char * input, int size, ConverterState * state = 0 ) const
, но скорее всего ваше желание связано с непониманием происходящего.
пи.си. не все символы в unicode 16bit кодируются 2-мя байтами, насколько я помню

ну а по коду как будет выглядеть если допустим имеем :
char s1 = '0x34';
char s2 = '0xA8';

И нужно получить :
QChar s ='0xA834';


Название: Re: Как из двух char cделать один QChar?
Отправлено: SimpleSunny от Июнь 12, 2010, 23:22
Код
C++ (Qt)
QChar::QChar ( uchar cell, uchar row )
inline QChar::QChar(uchar c, uchar r) : ucs(ushort((r << 8) | c)){}
 


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 23:24
QChar::QChar ( uchar cell, uchar row )
inline QChar::QChar(uchar c, uchar r) : ucs(ushort((r << 8) | c)){}


да ну!!! и что ? пашет? :)


Название: Re: Как из двух char cделать один QChar?
Отправлено: SimpleSunny от Июнь 12, 2010, 23:28
Почитайте про операции << и |.


Название: Re: Как из двух char cделать один QChar?
Отправлено: zenden от Июнь 12, 2010, 23:29
скажите, а зачем вам это надо


Название: Re: Как из двух char cделать один QChar?
Отправлено: Sancho_s_rancho от Июнь 12, 2010, 23:31
скажите, а зачем вам это надо
Присоединяюсь к вопросу.


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 23:31
Почитайте про операции << и |.

понял, сдвиг и логическая операция "и"
спасибо


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 12, 2010, 23:33
скажите, а зачем вам это надо

да, просто возник вопрос как это сделать, вот и узнавал


Название: Re: Как из двух char cделать один QChar?
Отправлено: mqter от Июнь 13, 2010, 00:24
Кстати, с праздником вас ребята, Спасибо еще раз, не судите строго, только учусь ;)


Название: Re: Как из двух char cделать один QChar?
Отправлено: Denjs от Сентябрь 03, 2010, 09:40
гм... тупо в лоб можно так:
Каг-бэ не для обработки строк топикастер хочет байты в UTF готовить...?
на всякий сучай напишу как я бы это делал. С явным указанием кодека.

готовим данные
Код:
char ch1;
char ch2;
QByteArray byteArray;
byteArray.append ( ch1);
byteArray.append ( ch2);

преобразование делаем так :
Код:
Codec = QTextCodec::codecForName("UTF-8");
QString str=QString().append(Codec->toUnicode(byteArray);
и далее, если очень охота
Код:
QChar qch0=str.at(0);