|
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
|
Для 7 ки удобно использовать Использование классов .Net в 1С для новичков
http://stackoverflow.com/questions/623104/byte-to-hex-string |
|||
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
|
(12) Ну не читал Книга знаний: Математические вычисления в 1С ?
|
|||
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)
Всем спасибо за помощь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |