Форум: "Начинающим";
Текущий архив: 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