类型转换为整数

时间:2014-04-11 18:01:46

标签: c++ casting char

假设我有

    unsigned char * buffer; // buffer len in 10000

我想将buffer + 50转换为buffer + 54转换为int。以下代码可以使用

    int c=(*((int *) (buffer+ 32));

但有没有更好的方法来做到这一点以及应该采取多少指令?

非常感谢。

1 个答案:

答案 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;
}

当前方法的主要问题是遇到对齐问题(例如,您尝试从缓冲区中不在整数对齐障碍上的点转换整数指针)。转换方法可以解决这个问题。