![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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')) + ...