You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

在Raku中实现十六进制字符串转IEEE754浮点数

对应Python里通过struct.unpack实现的功能,Raku可以用以下几种方式完成转换:

方法一:利用Buf的unpack方法

直接通过Buf的unpack方法,用格式符指定小端字节序和单精度浮点数类型:

my $hex-string = "00000042";
# 将十六进制字符串转为字节缓冲区(Buf)
my $byte-buf = Buf.new: :16($hex-string);
# 按小端字节序解析为单精度浮点数
my $float-value = $byte-buf.unpack('<f');

say $float-value; # 输出:32.0

其中:

  • :16($hex-string) 表示把十六进制字符串转换成字节序列
  • <f 是解析格式符:< 代表小端字节序,f 代表IEEE754 32位单精度浮点数

方法二:用read-le方法读取小端数值

Buf提供了read-le方法,可直接按小端字节序读取指定类型的数值:

my $hex-string = "00000042";
my $byte-buf = Buf.new: :16($hex-string);
# 从缓冲区起始位置(0)读取小端单精度浮点数
my $float-value = $byte-buf.read-le(0, Cfloat);

say $float-value; # 输出:32.0

这里的Cfloat是Raku原生类型,对应C语言中的float,也就是IEEE754单精度浮点数。

内容的提问来源于stack exchange,提问作者ohmycloudy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:10:25