如何在Delphi中将浮点数转换为十六进制(和后退)

时间:2010-02-05 13:23:09

标签: delphi floating-point hex

  

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

是否有一个函数可用于将浮点值转换为十六进制值并返回?

2 个答案:

答案 0 :(得分:4)

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;
Single in binary represenation: BFEBA5E3
Converted back to single: -1,84
Double in binary represenation: CA5F7DD860D57D4D
Converted back to double: -1,841E50

答案 1 :(得分:0)

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

可能你需要撬开IEEE格式双重类型的位并将它们更改为十六进制,然后用中间点连接。

如果这不是您要找的答案,请用“十六进制值”指定您的意思。

如果您只想将其转换为数组,例如bytes,定义一个具有合适大小的字节类型数组(4个用于单个,8个用于double和10个扩展)和类型转换。