Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.02.03;
Скачать: CL | DM;

Вниз

HexToStr   Найти похожие ветки 

 
MOO   (2008-01-05 11:27) [0]

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

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


 
Loginov Dmitry ©   (2008-01-05 11:51) [1]

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


 
Anatoly Podgoretsky ©   (2008-01-05 11:57) [2]

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


 
DVM ©   (2008-01-05 12:07) [3]


> 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;


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


> MOO   (05.01.08 11:27)  

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


 
MetalFan ©   (2008-01-05 12:30) [5]

BinToHex/HexToBin ?


 
Anatoly Podgoretsky ©   (2008-01-05 12:43) [6]

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

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


 
{RASkov} ©   (2008-01-05 12:59) [7]

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

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


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

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


 
Dennis I. Komarov ©   (2008-01-05 17:12) [9]

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


 
Dennis I. Komarov ©   (2008-01-05 17:19) [10]

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

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


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

функция Format


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

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

> Dennis I. Komarov

нет


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


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

не так ли?


 
Dennis I. Komarov ©   (2008-01-06 10:08) [14]

> [12] MOO   (05.01.08 19:14)

Что нет?


 
DVM ©   (2008-01-06 11:33) [15]


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.02.03;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
15-1199107075
Иксик
2007-12-31 16:17
2008.02.03
Посоветуйте русскую песню, чтобы немцам поставить :)


15-1198422204
Sergey Masloff
2007-12-23 18:03
2008.02.03
А почему просто не удалять мусорные ветки?


2-1200213332
Василий
2008-01-13 11:35
2008.02.03
If


2-1199550291
Gal'cev
2008-01-05 19:24
2008.02.03
Как создать отчёт в клеточку?


4-1183109513
евнен
2007-06-29 13:31
2008.02.03
форматирование диска без участия пользователя