【问题标题】:How to convert a floating point to hexadecimal (and back) in Delphi [duplicate]如何在Delphi中将浮点数转换为十六进制(并返回)[重复]
【发布时间】:2026-01-10 07:40:01
【问题描述】:

可能重复:
Converting float or negative integer to hexadecimal in Borland Delphi

有没有可以用来将浮点值转换为十六进制值并返回的函数?

【问题讨论】:

  • 您想将内存字节或 实际 值表示为十六进制字符串吗?
  • 也许你不明白数值的二进制和文本表示之间的区别。我不认为你真的需要浮点值的十六进制表示。描述你真正的问题,你会得到有用的答案。
  • 正如保罗所说,您的其他帖子的副本(已回答)。您在该帖子中获得了有关将浮点数转换为十六进制并返回的文章的链接。

标签: delphi floating-point hex


【解决方案1】:
procedure ShowBinaryRepresentation;
var
  S, S2: Single;
  I: Integer;
  D, D2: Double;
  I64: Int64;
begin
  S := -1.841;
  I := PInteger(@S)^;
  OutputWriteLine(Format('Single in binary represenation: %.8X', [I]));

  S2 := PSingle(@I)^;
  OutputWriteLine(Format('Converted back to single: %f', [S2]));

  D := -1.841E50;
  I64 := PInt64(@D)^;
  OutputWriteLine(Format('Double in binary represenation: %.16X', [I64]));

  D2 := PDouble(@I64)^;
  OutputWriteLine(Format('Converted back to double: %f', [D2]));
end;
二进制表示中的单个:BFEBA5E3 转换回单人:-1,84 二进制表示中的双精度:CA5F7DD860D57D4D 转换回双倍:-1,841E50

【讨论】:

    【解决方案2】:

    不是浮点数。有 inttohex 可以将整数(也可能是 int64)转换为十六进制字符串。

    您可能需要撬开 IEEE 格式双精度类型中的位并将它们更改为十六进制,然后将其与中间的点连接起来。

    如果这不是您要寻找的答案,请说明“十六进制值”的含义。

    如果您只想将其转换为一个数组,例如字节,定义一个合适大小的字节类型数组(单字节4,双字节8,扩展10),然后进行类型转换。

    【讨论】:

      最近更新 更多