我将字符串转换为十六进制,但是当我转换时,十六进制代码有2 *长度(字符串)我可以这样做“字符串长度=六角字符串长度”是否可能?
我发现这段代码有效吗?
var
fs: TFileStream;
temp: Char;
buffer: string;
pBuffer: PAnsiChar;
text: PAnsiChar;
begin
fs := TFileStream.Create('file way', fmOpenRead or fmShareDenyNone);
fs.Position := 0;
while fs.Position < fs.Size do
begin
fs.Read(temp, 1); //buffer içine her defasında 1 byte gelir.
buffer := buffer + temp;
end;
pBuffer := PAnsiChar(buffer);
BinToHex(pBuffer, text, Length(buffer));
Memo1.Text := text;
end;
答案 0 :(得分:3)
执行此操作的唯一方法是以某种方式将字符映射到4位值并将其转换为十六进制。这意味着只有十六个值是可能的,所以,不,如果有超过十六种可能性,你不能以一般的方式做到这一点。
8位值(或5到8位的任何长度)每个值需要两个十六进制数字。