Главная страница
    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.048 c
4-1182958417
sergeii
2007-06-27 19:33
2008.02.03
как можно послать локальному активному пользователю сообщение


2-1200134350
AntonUSAnoV
2008-01-12 13:39
2008.02.03
как узнать существует ли файл?


3-1190795966
Quart
2007-09-26 12:39
2008.02.03
Сохранение БД


2-1199473874
ВВВ2
2008-01-04 22:11
2008.02.03
Передача record a в форму


2-1200206885
Anion
2008-01-13 09:48
2008.02.03
Проблема запуска Delphi 6





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