gpt4 book ai didi

c++ - 打印出 float 的内六角

转载 作者:太空狗 更新时间:2023-10-29 19:51:17 26 4
gpt4 key购买 nike

所以我想我可以像这样打印float的内部十六进制:

const auto foo = 13.0F;
const auto bar = reinterpret_cast<const unsigned char*>(&foo);

printf("0x%02hhX%02hhX%02hhX%02hhX\n", bar[0], bar[1], bar[2], bar[3]);

这个输出:

0x00005041

但是当我查看调试器时,它为 foo 报告的十六进制是:

0x003EF830

谁能帮助我理解为什么这不起作用以及我需要做什么才能让它起作用?

最佳答案

你几乎明白了。我不确定调试器显示的是什么,但它不是你的 float 。也许这是它的地址?

实际浮点值是0x41500000。您可以在这里查看:IEEE-754 Floating Point Converter .如果链接不起作用,您必须自己查找在线浮点分析器/说明。

您的做法是正确的,但您忘记了 Intel x86 CPU(我想您的 CPU 是 Intel x86)是小端。这意味着更高的重要性字节位于更高的内存地址上。因此,您应该以与打印字节相反的顺序打印字节,如下所示:

printf("0x%02hhX%02hhX%02hhX%02hhX\n", bar[3], bar[2], bar[1], bar[0]);

关于c++ - 打印出 float 的内六角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043697/

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