gpt4 book ai didi

perl - 如何在 Perl 中将 float 转换为十六进制字符串?

转载 作者:行者123 更新时间:2023-12-04 11:19:03 25 4
gpt4 key购买 nike

为了确定我的计算在所有情况下都是正确的,我希望将结果( double 数)视为十六进制或二进制字符串。如何在 Perl 中获取此数字的十六进制/二进制字符串或字节表示?在 Java ,例如,我可以使用

double d = performMyCalculations();
System.out.format("%x\n", Double.doubleToLongBits(d));

为此,它将打印 3fc33333333333330.15 .我怎样才能在 Perl 中得到类似的结果?

最佳答案

Perl 的 pack()unpack()函数允许您来回转换二进制表示。

my $double_bits = unpack "Q", pack "d", 0.15;
printf "%x\n", $double_bits;
# Output: 3fc3333333333333
pack "d"打包一个 double 作为它的二进制表示。与 unpack "Q"我们将此位模式解包为一个无符号的 64 位整数。因此,这将 double 的位模式重新解释/转换为整数,然后我们可以用十六进制数字输出。

Perl 还有一个格式化选项来显示十六进制浮点数:
printf "%a\n", 0.15;
# Output: 0x1.3333333333333p-3

关于perl - 如何在 Perl 中将 float 转换为十六进制字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47854212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com