Страницы: 1
RSS
Преобразование буквенных символов в шестнадцатиричный код
 
Доброго времени суток. Подскажите функцию (или функции) с помощью которых можно преобразовать текстовые символы в шестнадцатиричный код. Например, строка HUN будет иметь вид 48554E.  
Заранее спасибо.
 
Hex(asc("символ"))
Я сам - дурнее всякого примера! ...
 
Если число символов постоянно, то в Excel 2007-2010 как-то так:  
 
=ДЕС.В.ШЕСТН(КОДСИМВ(ПСТР(A1;1;1)))&ДЕС.В.ШЕСТН(КОДСИМВ(ПСТР(A1;2;1)))&ДЕС.В.ШЕСТН(КОДСИМВ(ПСТР(A1;3;1)))
KL
 
{quote}{login=KL}{date=24.12.2011 08:57}{thema=}{post}Если число символов постоянно, то в Excel 2007-2010 как-то так:  
 
=ДЕС.В.ШЕСТН(КОДСИМВ(ПСТР(A1;1;1)))&ДЕС.В.ШЕСТН(КОДСИМВ(ПСТР(A1;2;1)))&ДЕС.В.ШЕСТН(КОДСИМВ(ПСТР(A1;3;1))){/post}{/quote}  
 
Большое спасибо, количество символов постоянно, именно то, что нужно, выручили )
 
Вариант:  
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;{1:2:3};1))*256^{2:1:0}))
 
{quote}{login=MCH}{date=25.12.2011 11:57}{thema=}{post}Вариант:  
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;{1:2:3};1))*256^{2:1:0})){/post}{/quote}  
 
С константами массива СУММПРОИЗВ() не требуется:  
 
=ДЕС.В.ШЕСТН(СУММ(КОДСИМВ(ПСТР(A1;{1:2:3};1))*256^{2:1:0}))  
 
Ну и тогда динамический (для переменной длины строки, нелетучий и без спец. ввода) вариант:  
 
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)));1))*256^(СТРОКА(ИНДЕКС($A:$A;ДЛСТР(A1)):ИНДЕКС($A:$A;1))-1)))  
 
Если нужно чтобы все HEX коды имели одинаковую разрядность, то нужно использовать второй параметр функции ДЕС.В.ШЕСТН() (см. Справку).
KL
 
{quote}{login=KL}{date=25.12.2011 02:26}{thema=Re: }{post}  
Ну и тогда динамический (для переменной длины строки, нелетучий и без спец. ввода) вариант:  
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)));1))*256^(СТРОКА(ИНДЕКС($A:$A;ДЛСТР(A1)):ИНДЕКС($A:$A;1))-1)))  
{/post}{/quote}  
тогда уж:    
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)));1))*256^(ДЛСТР(A1)-СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1))))))  
 
т.к. запись СТРОКА(ИНДЕКС($A:$A;ДЛСТР(A1)):ИНДЕКС($A:$A;1))    
идентична записи СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)))  
и выдает массив {1:2:3}
 
{quote}{login=MCH}{date=25.12.2011 02:46}{thema=Re: Re: }{post}{quote}{login=KL}{date=25.12.2011 02:26}{thema=Re: }{post}  
Ну и тогда динамический (для переменной длины строки, нелетучий и без спец. ввода) вариант:  
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)));1))*256^(СТРОКА(ИНДЕКС($A:$A;ДЛСТР(A1)):ИНДЕКС($A:$A;1))-1)))  
{/post}{/quote}  
тогда уж:    
=ДЕС.В.ШЕСТН(СУММПРОИЗВ(КОДСИМВ(ПСТР(A1;СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)));1))*256^(ДЛСТР(A1)-СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1))))))  
 
т.к. запись СТРОКА(ИНДЕКС($A:$A;ДЛСТР(A1)):ИНДЕКС($A:$A;1))    
идентична записи СТРОКА(ИНДЕКС($A:$A;1):ИНДЕКС($A:$A;ДЛСТР(A1)))  
и выдает массив {1:2:3}{/post}{/quote}  
Пожалуй :)
KL
Страницы: 1
Читают тему
Наверх