function StrToHex(const Value: TBytes): string;
var
Length: Integer;
OutBytes: TBytes;
begin
Length := System.Length(Value) shl 1;
SetLength(OutBytes, Length);
System.Classes.BinToHex(Value, 0, OutBytes, 0, Length shr 1);
Result := TEncoding.ASCII.GetString(OutBytes);
end;
function HexToStr(const Value: string): TBytes;
var
Length: Integer;
InBytes: TBytes;
begin
InBytes := TEncoding.ASCII.GetBytes(Value);
Length := System.Length(InBytes) shr 1;
SetLength(Result, Length);
System.Classes.HexToBin(InBytes, 0, Result, 0, Length);
end;
下面是旧版本。不推荐。
function StrToHex(Value: TBytes): string;
var
I: Integer;
begin
Result := '';
for I := 0 to Length(Value) - 1 do
Result := Result + IntToHex(Ord(Value[I]), 2);
end;
function HexToStr(Value: string): TBytes;
var
Len,
I: Integer;
begin
Len := (Length(Value) div 2) + (Length(Value) mod 2);
SetLength(Result, Len);
Len := (Length(Value) div 2);
for I := 0 to Len -1 do
begin
//Copy based 1
Byte(Result[I]) := Byte(StrToInt('0x' + Copy(Value, I * 2 + 1, 2)));
end;
end;[/mw_shl_code]