|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Преобразовать 16-ричные значения байтов в текст
Пишу программу в Delphi XE8, разбирающую пакет данных, захваченный с помощью Wireshark и сохраненный в текстовый файл.
В файле содержится текст в виде: "d0 b2 d0 b0 d0 b4 d1 8f" или "6d 61 6b 61 72". (в первом случае это "вадя", во втором "makar"). Помогите, пожалуйста, как этот текст декодировать? |
#2
|
||||
|
||||
Вот для "makar" это под D7 работает
Код:
procedure TForm1.Button1Click(Sender: TObject); const Source: string = '6d 61 6b 61 72'; var s: string; i: integer; begin with TStringList.Create do try Text := StringReplace(Source, #32, #13#10, [rfReplaceAll]); s:= ''; for i := 0 to Count - 1 do s:= s + Chr(StrToInt('$' + Strings[i])); ShowMessage(s); finally Free; end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
proshka (19.04.2017)
|
#3
|
|||
|
|||
Решение подсказал Serge_Bliznykov с другого форума. Вот оно:
Код:
procedure TForm1.Button1Click(Sender: TObject); var s, sr : AnsiString; i : integer; ws : widestring; begin s := 'd0 b2 d0 b0 d0 b4 d1 8f'; i := 1; sr := ''; while i<Length(s) do begin sr := sr + AnsiChar(StrToInt('$'+copy(s,i,2))); Inc(i,3); end; ws := utf8decode(sr); ShowMessage(ws); end; |