Имя: Пароль:
1C
1C 7.7
v7: Преобразовать строку в HEX Строку в 1С 7.7
0 Diman_Kr
 
03.05.16
09:50
Кто знает как это сделать?
1 Pistol
 
03.05.16
09:54
В неведомую е... что?
2 Serginio1
 
03.05.16
10:09
3 4St
 
03.05.16
10:12
4 Serginio1
 
03.05.16
11:01
(3) Hex это 16 ричная система исчисления
https://ru.wikipedia.org/wiki/Шестнадцатеричная_система_счисления

а Base64 64 ричная
https://ru.wikipedia.org/wiki/Base64
5 4St
 
03.05.16
13:33
(4) точно, я перепутал. Спасибо.
6 1Сергей
 
03.05.16
13:59
там функция строк в 10 максимум
7 1Сергей
 
03.05.16
14:01
хотя нет, не понял задачу. Число в HEX-строку легко. HEX-строку в число легко. А строку в HEX... ХЗ. Это каждый символ представить как байт и преобразовать в HEX чтоли?
8 ДенисЧ
 
03.05.16
14:07
(7) Байт? А если уте utf (7,8), unicode, другая мультибайтовая?
9 1Сергей
 
03.05.16
14:09
(8) там же не текст, там строка. Хотя, хз что там аутор имел в виду...
10 1Сергей
 
03.05.16
14:10
Функция NumberToHEX(Чис) Экспорт
    
    МладшиеБиты = Чис % 16;
    СтаршиеБиты = Цел(Чис/16);
    
    Если СтаршиеБиты > 0 Тогда
        Результат = NumberToHEX(СтаршиеБиты);
    Иначе
        Результат = "";
    КонецЕсли;
    
    НЕХСимволы = "0123456789ABCDEF";
    
    Возврат Результат + Сред(НЕХСимволы, МладшиеБиты + 1, 1);
    
Конецфункции
11 1Сергей
 
03.05.16
14:17
ну и обратная функция

Функция HEXToNumber(НЕХ) Экспорт
    
    МладшиеБиты = Прав(НЕХ, 1);
    СтаршиеБиты = Лев(НЕХ, СтрДлина(НЕХ) - 1);
    
    НЕХСимволы = "0123456789ABCDEF";
    Результат = Найти(НЕХСимволы, МладшиеБиты) - 1;
    
    Если СтаршиеБиты = "" Тогда
        Возврат Результат;
    Иначе
        Возврат HEXToNumber(СтаршиеБиты)*16 + Результат;
    КонецЕсли;
    
Конецфункции
12 Mikeware
 
03.05.16
17:55
(8) клюшки жеж. Откедова утф?
(10) зачем так сложно?
13 Garykom
 
гуру
03.05.16
18:08
14 Garykom
 
гуру
03.05.16
18:09
(13)+ поэтому "так сложно"
15 Mikeware
 
03.05.16
18:25
(14) Вать машу...
Что, ascii забыли совсем все?
Результат=1
Для и=1 по стрдлина(вхстрока) цикель
Результат+=симв(кодсимв("0")+цел(кодсимв(сред(вхстрока,и,1))/16))+симв(кодсимв("0")+цел(кодсимв(сред(вхстрока,и,1))%16))
КонецЦикла
7 строк с учетом оборачивания и возврата...
16 Garykom
 
гуру
03.05.16
18:28
(15) ыыы, убил
не я конечно не спорю что так можно, но это изврат
17 Mr_Rm
 
03.05.16
19:00
(15)
Не будет работать, когда кодсимв(сред(вхстрока,и,1))/16) >9 или кодсимв(сред(вхстрока,и,1))%16 >9, поскольку в ASCII разрыв между "9" и "A".
Зачем вычислять кодсимв("0")? Просто 48.
Зачем вызывать цел() для кодсимв()?
Если нужен однострочник, то вот:
Результат+=сред("0123456789ABCDEF",кодсимв(сред(вхстрока,и,1))/16),1) + сред("0123456789ABCDEF",кодсимв(сред(вхстрока,и,1))%16),1) );
18 Diman_Kr
 
04.05.16
03:58
Ребята, всем спасибо за участие, буду пробовать.
(15) Буквы теряются.
Garykom, спасибо за (13)
19 1Сергей
 
04.05.16
06:22
Чего там сложного? Едва ли моя функция сложнее (13)...
20 1Сергей
 
04.05.16
06:32
(15) сам-то пробовал? не работает
21 Diman_Kr
 
04.05.16
10:40
Все получилось, использовал (13)
Всем спасибо за помощь.