Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.045 c
15-1198830321
fevadmin
2007-12-28 11:25
2008.02.03
Помогите в выборе оборудования


6-1179549625
Lora
2007-05-19 08:40
2008.02.03
уползание/вылетание картинок


11-1182779412
max727
2007-06-25 17:50
2008.02.03
KOLComObj


11-1183049737
Nikfel
2007-06-28 20:55
2008.02.03
Как создать свой компонент.


15-1198589863
Prohodil Mimo
2007-12-25 16:37
2008.02.03
FastReport align в TfrxCrossView





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский