【问题标题】:How can I convert string to hex without changing its length?如何在不更改长度的情况下将字符串转换为十六进制?
【发布时间】:2011-06-30 15:07:53
【问题描述】:

我将字符串转换为十六进制,但是当我转换时,十六进制代码有 2*length(string) 我可以这样做“字符串长度=十六进制字符串长度”吗?

我发现这段代码有用吗?

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;

【问题讨论】:

    标签: delphi delphi-7


    【解决方案1】:

    这样做的唯一方法是以某种方式将字符映射到 4 位值并将其转换为十六进制。这意味着只有 16 个值是可能的,所以,不,如果有超过 16 个可能性,你不能以一般的方式这样做。

    8 位值(或从 5 到 8 位的任何长度)每个值需要 两个十六进制数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 2012-07-22
      • 2013-05-10
      • 2015-10-26
      • 2017-08-23
      相关资源
      最近更新 更多