如何正确地将UINT32_T施加到未签名中

how to correctly cast uint32_t to unsigned

本文关键字:施加 正确地 UINT32      更新时间:2023-10-16

我正在尝试使用地址消毒剂修复一些C 代码。代码说:

unsigned result = *(uint32_t*)data;

和消毒剂给出:

runtime error: load of misaligned address 0x6280033f410a for type 'uint32_t', which requires 4 byte alignment

我需要如何解决此问题?

load of misaligned address 0x6280033f410a for type 'uint32_t' ...

我需要如何解决此问题?

您需要创建一个对齐对象(例如变量),然后从未对准的地址复制内容:

std::uint32_t u32;
std::memcpy(&u32, data, sizeof u32);

这假设您打算从该地址读取sizeof u32字节,并且这些字节是在本地endianness中排序的。

如何正确施放UINT32_T到unsigned

隐式转换应该很好:

unsigned result = u32;