Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2009, 15:43   #1
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию TBytes в строку

Здравствуйте, уважаемые!
Подскажите, как тип данных TBytes преобразовать в текст (точнее в набор НЕХ-данных)

Например: 'A1 98 7C 86 F2' вот чтоб строкой только видно было

Есть одна функция, но она работает не совсем так как надо...

Код:
function HexToString(Hex:String):String;
var
  buf:String;
  bt:Byte;
  i:Integer;
begin
  buf:='';
  Hex:=SymbolEntersCount(UpperCase(Hex));
  for i:=0 to (Length(Hex) div 2)-1 do begin
    bt:=0;
    if (Byte(hex[i*2+1])>$2F)and(Byte(hex[i*2+1])<$3A)then bt:=Byte(hex[i*2+1])-$30;
    if (Byte(hex[i*2+1])>$40)and(Byte(hex[i*2+1])<$47)then bt:=Byte(hex[i*2+1])-$37;
    if (Byte(hex[i*2+2])>$2F)and(Byte(hex[i*2+2])<$3A)then bt:=bt*16+Byte(hex[i*2+2])-$30;
    if (Byte(hex[i*2+2])>$40)and(Byte(hex[i*2+2])<$47)then bt:=bt*16+Byte(hex[i*2+2])-$37;
    buf:=buf+char(bt);
  end;
  HexToString:=buf;
end;
Помогите переделать её в нужный вид...

Заранее благодарен!
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2009, 16:20   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Извиняюсь) Сам нашел, но пришлось доработать... Вдруг кому пригодится:
BytesToHex:
Код:
function TSDIAppForm.BToH(Data : tBytes) : String;
CONST
  HEXChars: array [0..15] of char = '0123456789ABCDEF';
VAR Nibble1 : Byte;
    Nibble2 : Byte;
    tStr,tmp : String;
    I: Integer;
begin
for I := 0 to Length(Data) - 1 do begin
  Nibble1 := (Data[I] AND $0F); { AND 00001111b }
  Nibble2 := (Data[I] AND $F0) SHR 4; { AND 11110000b }
  tStr := HEXChars[Nibble2]+HEXChars[Nibble1];
  tmp:= tmp+tStr+' ';
end;
Result:=tmp;
end;
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 26.12.2009, 18:10   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А штатная BinToHex чем не устроила ?
mihali4 вне форума Ответить с цитированием
Старый 26.12.2009, 18:20   #4
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

не знал про неё...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенести строку Михаил Юрьевич БД в Delphi 3 04.08.2009 12:16
Программа Вводит символьную строку и число N и выводит строку, состоящую из первых N символов (С++) Yulai Помощь студентам 1 11.05.2009 11:39
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59
Что за tBytes? Altera Работа с сетью в Delphi 6 04.03.2009 20:17
Задача на строку. fikret123 Паскаль, Turbo Pascal, PascalABC.NET 11 21.03.2008 07:40