假设我有
unsigned char * buffer; // buffer len in 10000
我想将 buffer+50 转换为 buffer+54 到 int。以下代码有效
int c=(*((int *) (buffer+ 32));
但是有没有更好的方法来做到这一点以及需要多少指令?
非常感谢。
最佳答案
像这样的东西会起作用:
std::uint32_t convert_to_int32(std::uint8_t* buffer) // assume size 4
{
std::uint32_t result = (static_cast<std::uint32_t>(buffer[0]) << 24) |
(static_cast<std::uint32_t>(buffer[1]) << 16) |
(static_cast<std::uint32_t>(buffer[2]) << 8) |
(static_cast<std::uint32_t>(buffer[3]));
return result;
}
当前方法的主要问题是遇到对齐问题(例如,您尝试从缓冲区中不在整数对齐屏障上的点转换整数指针)。移位方法解决了这个问题。
关于c++ - 类型转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23019561/