gpt4 book ai didi

arrays - Delphi-BinToHex 和 HexToBin : Reversal

转载 作者:行者123 更新时间:2023-12-03 15:37:11 32 4
gpt4 key购买 nike

我有一个字节数组,我希望将其转换为十六进制字符串,然后再转换回字节数组。

我使用以下内容转换为十六进制字符串:

function bintoHex(const bin: array of byte): String;
const HexSymbols = '0123456789ABCDEF';
var i: integer;
begin
SetLength(Result, 2*Length(bin));
for i := 0 to Length(bin)-1 do begin
Result[1 + 2*i + 0] := HexSymbols[1 + bin[i] shr 4];
Result[1 + 2*i + 1] := HexSymbols[1 + bin[i] and $0F];
end;
end;

我不确定如何将其正确转换回字节数组。我正在拍摄类似以下内容的内容:

Type TDCArray = Array of Byte;

function xHexToBin(const HexStr: String): TDCArray;
const HexSymbols = '0123456789ABCDEF';
var i: integer;
begin
SetLength(Result, ???); //Need to now get half of the length, unsure how to go about that
for i := 0 to Length(HexStr)-1 do begin
//Here convert back into an array somehow...
//Result[i] := ???
end;
end;

我该如何去做呢?

另外,我正在使用Delphi XE2。

最佳答案

为什么不直接使用 BinToHexHexToBin RTL 函数?

{$APPTYPE CONSOLE}

uses
System.Classes,
System.SysUtils;

var
LArray : array[1..6] of Byte = (10, 11, 12, 13, 14, 15);
LText: string;
I : integer;
begin
try
SetLength(LText, Length(LArray)*2);
BinToHex(@LArray, PChar(LText), SizeOf(LArray));
//show the hex string
Writeln(LText);

//fill the array with 0
FillChar(LArray, SizeOf(LArray), #0);

//get the values from the hex string
HexToBin(PChar(LText), @LArray, Length(LArray));

//show the array values
for i := 1 to Length(LArray) do
Write(LArray[i]);
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.

关于arrays - Delphi-BinToHex 和 HexToBin : Reversal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981308/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com