假设我有
unsigned char * buffer; // buffer len in 10000
我想将buffer + 50转换为buffer + 54转换为int。以下代码可以使用
int c=(*((int *) (buffer+ 32));
但有没有更好的方法来做到这一点以及应该采取多少指令?
非常感谢。
答案 0 :(得分:1)
这样的事情会起作用:
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;
}
当前方法的主要问题是遇到对齐问题(例如,您尝试从缓冲区中不在整数对齐障碍上的点转换整数指针)。转换方法可以解决这个问题。