如何正确地将 uint32_t 转换为无符号
how to correctly cast uint32_t to unsigned
我正在尝试使用地址清理器修复一些 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' ...
How do I need to fix this?
您需要创建一个对齐的对象(如变量),并从未对齐的地址复制内容:
std::uint32_t u32;
std::memcpy(&u32, data, sizeof u32);
这假定您打算从该地址读取 sizeof u32
个字节,并且这些字节是按本机字节顺序排列的。
how to correctly cast uint32_t to unsigned
隐式转换应该没问题:
unsigned result = u32;
我正在尝试使用地址清理器修复一些 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' ...
How do I need to fix this?
您需要创建一个对齐的对象(如变量),并从未对齐的地址复制内容:
std::uint32_t u32;
std::memcpy(&u32, data, sizeof u32);
这假定您打算从该地址读取 sizeof u32
个字节,并且这些字节是按本机字节顺序排列的。
how to correctly cast uint32_t to unsigned
隐式转换应该没问题:
unsigned result = u32;