Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

HexToStr [D7, WinXP]


MOO ©   (2008-01-05 11:27:00) 

Граждане программисты, возникла такая проблема: "Нужно из HEX перевести в текст, не в цифру, а именно в текст тоесть "Delphi" в "44656C706869", из текста в HEX сделал, обратно не совсем еще понимаю пока что."
Может есть какие-нибудь идеи по этому поводу?
Вот сделал функцию из строки в HEX:

functionStrToHex(str: string): string;
var
i:Integer;
begin
for i:=1 to Length(Str) do begin
Result := Result + Format('%x', [Ord(Str[i])]);
end;
end;


DVM   (2008-01-06 11:33:00) [1]


> Dennis I. Komarov ©   (06.01.08 10:08) [14]
> > [12] MOO   (05.01.08 19:14)
>
> Что нет?

ты не понял, что он делает.


Dennis I. Komarov   (2008-01-06 10:08:00) [2]

> [12] MOO   (05.01.08 19:14)

Что нет?


Правильный_Вася   (2008-01-05 19:51:00) [3]


> перевести в текст

не так ли?


MOO   (2008-01-05 19:14:00) [4]

Format вроде она только для string

> Dennis I. Komarov

нет


Правильный_Вася   (2008-01-05 18:46:00) [5]

функция Format


Dennis I. Komarov   (2008-01-05 17:19:00) [6]

> [9] Dennis I. Komarov ©   (05.01.08 17:12)
StrToHex

Ну наоборот всмысле :)


Dennis I. Komarov   (2008-01-05 17:12:00) [7]

function StrToHex(HEX: string): string;
begin
Result:=IntToStr(StrToInt('$' + HEX))
end;


MOO   (2008-01-05 13:57:00) [8]

Спасибо всем, будем работать =)


{RASkov}   (2008-01-05 12:59:00) [9]

> [6] Anatoly Podgoretsky ©   (05.01.08 12:43)
> Не ну ты HexToStr/StrToHex давай

можно универсально StrToStr()
Главное "внутри" не ошибиться :)


Anatoly Podgoretsky   (2008-01-05 12:43:00) [10]

> MetalFan  (05.01.2008 12:30:05)  [5]

Не ну ты HexToStr/StrToHex давай, а не binary


MetalFan   (2008-01-05 12:30:00) [11]

BinToHex/HexToBin ?


DVM   (2008-01-05 12:10:00) [12]


> MOO   (05.01.08 11:27)  

Твой код очень медленный. Вот такого Result := Result + ... для строк надо избегать.


DVM   (2008-01-05 12:07:00) [13]


> MOO

Вот почти то, что тебе надо:


//------------------------------------------------------------------------------

function BufferToStr(Buffer: Pointer; BufSize: Integer): string;
var
 Bytes: PByteArray;
 I: Integer;
 S: string;
begin
 Result := '';
 if Assigned(Buffer) and (BufSize > 0) then
 begin
   SetLength(Result, BufSize * 2);
   Bytes := Buffer;
   for I := 0 to BufSize - 1 do
   begin
     S := IntToHex(Bytes[I], 2);
     Result[I * 2 + 1] := S[1];
     Result[I * 2 + 2] := S[2];
   end;
 end;
end;

//------------------------------------------------------------------------------

function StreamToString(AStream: TMemoryStream): string;
begin
 Result := BufferToStr(AStream.Memory, AStream.Size);
end;

//------------------------------------------------------------------------------

procedure StringToStream(const Str: string; AStream: TMemoryStream);
var
 I: Integer;
 Bytes: PByteArray;

 function CharToByte(const AChar: Char): Byte;
 begin
   if AChar in ['0'..'9'] then
     Result := Ord(AChar) - Ord('0')
   else
     Result := Ord(AChar) - Ord('A') + 10;
 end;

begin
 AStream.Size := Length(Str) div 2;
 Bytes := AStream.Memory;
 for I := 1 to Length(Str) div 2 do
 begin
   Bytes[I - 1] := (CharToByte(Str[I * 2 - 1]) shl 4) or CharToByte(Str[I * 2]);
 end;
end;


Anatoly Podgoretsky   (2008-01-05 11:57:00) [14]

Ничего не надо переводить, HEX и так STR


Loginov Dmitry   (2008-01-05 11:51:00) [15]

Chr(StrToInt('$44')) + Chr(StrToInt('$65')) + ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо