gpt4 book ai didi

c++ - 需要在内存 C++ 中将 float 作为 HEX

转载 作者:行者123 更新时间:2023-11-27 22:32:24 25 4
gpt4 key购买 nike

标题。需要将 bridgeSymbol 十六进制值放入 myVariable 内存缓冲区。我已经尝试了所有想到的转换(bit_cast、reinterpret_cast)。

预期结果应该是 (float)bridgeSymbolmyVariable 指针地址的十六进制值。

我错过了什么?

uintptr_t myVariable = 0xC70BBF5C;

float bridgeSymbol = *(float*)(&myVariable); //Big endian -35775.36 OK!
bridgeSymbol = bridgeSymbol / 10; //some random operation = -3577.5

myVariable = (uintptr_t)bridgeSymbol; //expected 0xc55f9800 but getting random values

编辑 1:建议的更详细的解释。

最佳答案

这里有一些更接近您想要的东西。

 static_assert(sizeof(float) == 4);
myVariable = *(uint32_t*)(&bridgeSymbol);

上面基本上就是说,把float占用的4字节内存当成一个32位的uint,然后赋值回myVariable。这实际上与您将原始值转换为 float 的操作相反。

问题是你的 myVariable 被声明为 uintptr_t,它在 32 位平台上是 32 位的。但是一旦您的代码编译为 64 位,它将是一个 64 位数字。

float 在任何架构上几乎总是 32 位的。所以我建议您也将 myVariable 声明为 uin32_t。

关于c++ - 需要在内存 C++ 中将 float 作为 HEX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59328699/

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