error: invalid static_cast from type ‘unsigned char*’ to type ‘uint32_t* {aka unsigned int*}’
uint32_t *starti = static_cast<uint32_t*>(&memory[164]);
我分配了一个char数组,我想读取4个字节作为32位int,但是出现编译器错误。我知道我可以这样移动:
(start[0] << 24) + (start[1] << 16) + (start[2] << 8) + start[3];
它会做同样的事情,但这是很多额外的工作。
是否可以将这四个字节转换为int类型?
static_cast
旨在用于“行为良好”的演员表,例如double -> int
。您必须使用reinterpret_cast
:
uint32_t *starti = reinterpret_cast<uint32_t*>(&memory[164]);
或者,如果您愿意,则使用C样式强制转换:
uint32_t *starti = (uint32_t*)&memory[164];
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句