【问题标题】:Delphi: Convert a TByte into its corresponding Hex-Value in AnsiStringDelphi:将一个 TByte 转换为 AnsiString 中相应的十六进制值
【发布时间】:2011-03-28 08:14:40
【问题描述】:

我正在尝试将 TByte 的值作为其在 AnsiString 中对应的十六进制表示形式输出。

示例: TByte 为 0x4F AnsiString: "4F"(两个字符,一个 4 和一个 F)

我知道 StringOf 函数,但它会转换为“映射”字符。

是否有任何不错的内置功能,或者有人知道如何快速实现这个功能?

提前非常感谢你:)

【问题讨论】:

  • TByte 是 Delphi 2010 中的新内容,还是只是一个错字?
  • 对不起,就像我在对原始答案的评论中写的那样,我假设 TBytes 的基本类型是 TByte,但它只是“字节”。对不起。

标签: delphi delphi-2010 byte hex


【解决方案1】:

我会将其转换为 Byte 并将其提供给 SysUtils.IntToHex。

【讨论】:

  • 是的,它可以工作:D 谢谢,我刚刚注意到它不是 TByte 而是一个“字节”,所以我可以照原样喂它。
【解决方案2】:

格式函数自 Turbo Pascal 时代以来就已存在,而 SysUtils Hex 函数不可用。

所以对于D2010之前的任何版本的Delphi,使用格式命令:

lByteAsHex := format('%.2x',[AByte]);

.2 精度说明符确保始终有前导零。

下面一行:

lIntAsHex = format('%x',[AInt]);

处理任何大小的整数(包括 int64)但不会放前导零,所以 format(%x,[10]) 将返回“A”,而 format('%.2x',[10] 将返回“0A”

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 2012-11-30
    • 2011-08-04
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2014-02-05
    • 2011-09-21
    相关资源
    最近更新 更多