Форум по программированию Delphi Sources

 



Вернуться   Форум по программированию Delphi Sources > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.04.2017, 15:43
proshka proshka вне форума
Прохожий
 
Регистрация: 06.09.2015
Сообщения: 5
Версия Delphi: Delphi XE8
Репутация: 10
По умолчанию Преобразовать 16-ричные значения байтов в текст

Пишу программу в Delphi XE8, разбирающую пакет данных, захваченный с помощью Wireshark и сохраненный в текстовый файл.
В файле содержится текст в виде: "d0 b2 d0 b0 d0 b4 d1 8f" или "6d 61 6b 61 72". (в первом случае это "вадя", во втором "makar").
Помогите, пожалуйста, как этот текст декодировать?
Ответить с цитированием
  #2  
Старый 18.04.2017, 18:13
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,026
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот для "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;
а с юникодом в русской раскладке под XE8 вам виднее
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
proshka (19.04.2017)
  #3  
Старый 19.04.2017, 05:38
proshka proshka вне форума
Прохожий
 
Регистрация: 06.09.2015
Сообщения: 5
Версия Delphi: Delphi XE8
Репутация: 10
По умолчанию

Решение подсказал 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;
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2019

ВКонтакте   Facebook   Twitter