Главная страница
    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.48 MB
Время: 0.045 c
2-1199562154
MOO
2008-01-05 22:42
2008.02.03
И снова...и опять HEX


15-1198637568
Slider007
2007-12-26 05:52
2008.02.03
С днем рождения ! 26 декабря 2007 среда


15-1196883191
Rouse_
2007-12-05 22:33
2008.02.03
Традиционное предновогоднее ММР


4-1182263344
golum
2007-06-19 18:29
2008.02.03
Есть ли способы перехвата клавиш...


1-1193671998
avoid
2007-10-29 18:33
2008.02.03
Как узнать, по какой колонке был клик в TListView?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский