Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.117.153.38] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток, форумчане.
Понадобилось перевести значения ASCII => HEX. Нужно, например, в строке 489045487 разделить каждую цифру запятой и предать ей HEX вид. 4,8,9,0,4,5,4,8,7 = 34,38,39,30,34,35,34,38,37 Так можно превратить только одно значение: 4 = 34 Function HexToAscii(Hex: String): String; begin result := chr(StrToInt('$'+hex)); end; |
Сообщ.
#2
,
|
|
|
Цитата GrabbeR @ Доброго времени суток, форумчане. Ку! Цитата GrabbeR @ Понадобилось перевести значения ASCII => HEX Сложности то в чем? Цитата GrabbeR @ Так можно превратить только одно значение: 4 = 34 Магия! Но почему только одно? Ведь вроде бы функцию (если уж она устраивает), можно и дважды вызвать, вероятно? |
Сообщ.
#3
,
|
|
|
Можно как-то так:
Function HexToAscii(Hex: String): String; var s:string; I:integer; begin s := ''; for i:=1 to Hex.Length do s:= s + IntToStr(ord(Hex[i])-8) + ','; result := s; //chr(StrToInt('$'+hex)); end; |
Сообщ.
#4
,
|
|
|
Спасибо, сделал так:
xIn:='489045487'; xOut:=''; for i:=1 to Length(xIn) do xOut:=xOut+Format('%x,',[Ord(xIn[i])]); |
Сообщ.
#5
,
|
|
|
Можно и так, но всё же крайне дорогие же операции приписывания строк и запуски создания строки по формату! Лучше=быстрее уж заранее завести строку длины len*3+1 и записать в нужные места '3', ',' и число (аккуратно переведённое (mod'ом ?)).
|