wchar_t в char и обратно.

MacSim
Offline
Зарегистрирован: 28.11.2012

подскажите что представляет из себя wchar_t

склько он в памяти занимает?

 

как преобразовать wchar_t в char?

MacSim
Offline
Зарегистрирован: 28.11.2012

похоже оно двубайтное как инт... т.е. можно запихнуть как в инт...?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Это специальный тип для отображения символов национальных алфавитов. Оно Вам надо?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

wchar_t - это двухбайтовый символ юникода. Преобразование двухбайтовой величины в однобайтовую без потери информации невозможно. Обычно для такого преобразования нужен дополнительный параметр - номер кодовой таблице. И, естественно, никаких гарантий, что в данной кодовой таблице окажется символ, соответствующий исходному юникодному символу.

 

И еще, для полнорценного преобразования между юникодом и однобайтовыми кодировками в общем случае у Ардуино просто не хватит памяти. Даже у Мега 2560.

MacSim
Offline
Зарегистрирован: 28.11.2012

ЕвгенийП пишет:

Это специальный тип для отображения символов национальных алфавитов. Оно Вам надо?

Спрашиваю, значит надо.

MacSim
Offline
Зарегистрирован: 28.11.2012

andriano пишет:

wchar_t - это двухбайтовый символ юникода. Преобразование двухбайтовой величины в однобайтовую без потери информации невозможно. Обычно для такого преобразования нужен дополнительный параметр - номер кодовой таблице. И, естественно, никаких гарантий, что в данной кодовой таблице окажется символ, соответствующий исходному юникодному символу.

 

И еще, для полнорценного преобразования между юникодом и однобайтовыми кодировками в общем случае у Ардуино просто не хватит памяти. Даже у Мега 2560.

программа, выполняя вычисления получает , к примеру char A[]={"дуина:"};

они на русском. есть библиотека вывода на lcd1602 русского, ей надо скормить  wchar_t:

lcd.print(L"дуина:"); напрямую подставить значение не могу, оно получается путем вычислений.

вот и возникла мысль перевести из char в wchar_t, ну и обратно (естественно в 2 байта, чтоб не потерялась инфа).

то есть, раз 2-байтное надо как с интом, понял (мысли в слух), а что будет с ":" оно ведь однобайтное, или старший нулями забивать?

MacSim
Offline
Зарегистрирован: 28.11.2012

благодарю всех. сделал все на русском.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

MacSim пишет:

благодарю всех. сделал все на русском.

Делитесь с сообществом.