如何使用 Raku 将十六进制字符串转换为 IEEE754 浮点数?

ohm*_*udy 9 unpack pack raku

在Python中,unpack可以将十六进制字符串转换为IEEE754浮点数:

import struct

print(struct.unpack('<f', bytes.fromhex("00000042"))[0]) # 32.0
Run Code Online (Sandbox Code Playgroud)

<表示 LITTLE ENDIAN 字节顺序,f表示 Float 格式。

如何使用 Raku 将十六进制字符串转换为 IEEE754 浮点数?

Jon*_*ton 8

一种可能的方法是:

  1. 将其解析为整数
  2. 将整数写入Buf
  3. 从中读取一个浮点数Buf

例如:

say do given Buf.new {
    .write-int32(0, :16("00000042"), BigEndian);
    .read-num32(0)
}
Run Code Online (Sandbox Code Playgroud)

它给出与 Python 示例相同的输出 (32)。