作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个字节数组,我希望将其转换为十六进制字符串,然后再转换回字节数组。
我使用以下内容转换为十六进制字符串:
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。
最佳答案
为什么不直接使用 BinToHex
和 HexToBin
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/
我有一个字节数组,我希望将其转换为十六进制字符串,然后再转换回字节数组。 我使用以下内容转换为十六进制字符串: function bintoHex(const bin: array of byte):
我在 Delphi Berlin 中有一个程序,我想将其转换为 Linux 作为控制台应用程序。以下是我的程序: StrVal is declare as Private procedure DoGe
我的 PHP 和 C++ 脚本中都有以下字符串: 152F302436152F302435152F302434152F302433152F302433 在 PHP 中,我将内置的 hex2bin 函数
我是一名优秀的程序员,十分优秀!