URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 6868
[ Назад ]

Исходное сообщение
"HEX to char"

Отправлено Udzhen , 20-Окт-07 03:07 
Здравствуйте!
Понадобилось мне тут получить символ по его HEX коду, и даже в мануале к printf, в списке интерпретируемых последовательностей, такая возможность нашлась!
Привожу фрагмент help-а:

\xHH   byte with hexadecimal value HH (1 to 2 digits)

\uHHHH Unicode (ISO/IEC 10646) character with hex value HHHH (4 digits)

\UHHHHHHHH
       Unicode character with hex value HHHHHHHH (8 digits)


Но вот незадача!
Реально оказалось что работает только последовательность \xHH, а остальные выводятся как будто это обычный текст!
Вот пример:

printf "\xC0"  # Выводит имвол "А"
echo -e "\xC0"  # Даже echo выводит символ "А", хотя в мане про эту возможность ни слова!
printf "\u0410"  # А вот здесь грабли! И выводится "\u0410"

Я перепробовал все возможные типы форматирования, все бестолку!
И то, что на сях делается просто элементарно,

wchar_t single_char = (wchar_t)(0x0410)  // Символ 'А'
или наоборот:
long uint_char = (long)(L'А')

для bash, в виду "ограничений" самого языка, является проблеммой не тривиальной...
Думаю, суть проблеммы я изложил достаточно понятно. Прошу уважаемых участников форума поделится со мной своим опытом и указать мне (скорее всего видимо на мои кривые руки) путь решения этой задачи.

-------
С Уважением, Евгений.


Содержание

Сообщения в этом обсуждении
"HEX to char"
Отправлено phpcoder , 20-Окт-07 13:15 
[c0der@rock ~]$ printf "\xC0\n" # Выводит имвол "А"
А
[c0der@rock ~]$ echo -e "\xC0"
А
[c0der@rock ~]$ printf "\u0410\n"  # А вот здесь грабли! И выводится "\u0410"  
А

Локаль CP1251, aterm/xterm -- всё работает. Дистрибутив ALT Linux, если это имеет значение.


"HEX to char"
Отправлено jd , 20-Окт-07 16:53 
У меня лично так:

$ printf "\u0410\n"
\u0410
$ /bin/printf "\u0410\n"
А
$ type printf
printf is a shell builtin

Так что, всё соответствует. В мане по bash ничего такого и не заявлено касательно его printf.


"HEX to char"
Отправлено phpcoder , 20-Окт-07 18:55 
[...]
>$ type printf
>printf is a shell builtin

У меня zsh, кстати.


"HEX to char"
Отправлено jd , 20-Окт-07 20:41 
>У меня zsh, кстати.

Да я так и подумал, что не bash...