gpt4 book ai didi

写入内存时,从 Float 到 Hex 的 C++ 转换不正确

转载 作者:行者123 更新时间:2023-11-30 02:44:35 30 4
gpt4 key购买 nike

我正在尝试将浮点值 (0.75) 转换为十六进制并将转换后的值写入内存。

    char Actual[4];
float f = 0.75f;
int i = *(reinterpret_cast<int*>(&f));
wsprintf(Actual, "%08X", i);
MessageBox(NULL, Actual, "Float", NULL);

unsigned long OldProtection;
VirtualProtect((LPVOID)(0x01234567), 4, PAGE_EXECUTE_READWRITE, &OldProtection);
memcpy((LPVOID)0x01234567, Actual, 4);
VirtualProtect((LPVOID)(0x01234567), 4, OldProtection, NULL);

转换效果很好,使用 MessageBox 时输出正确的值 (3F400000)。

但是当使用 memcpy 将转换后的值写入内存时,目标地址的值是 30303030 而不是 3F400000。

我想我错过了一些额外的步骤。可能是什么问题?

最佳答案

您正在将 text 写入 Actual

十六进制 30 是零数字的 ASCII 代码。

关于写入内存时,从 Float 到 Hex 的 C++ 转换不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166319/

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