C ++字节数组转换为int

时间:2018-09-25 06:52:46

标签: c++

现在有一个unsigned char bytes[4],我已经知道字节数组是从C ++中的int生成的。如何将数组转换回int

2 个答案:

答案 0 :(得分:3)

  

我已经知道字节数组是由C ++中的int生成的。

了解如何从一个整数生成数组至关重要。 如果是通过简单地在同一CPU上复制字节生成的数组,那么您可以通过简单地复制来转换回:

int value;
assert(sizeof value == sizeof bytes);
std::memcpy(&value, bytes, sizeof bytes);

但是,如果阵列遵循的是除CPU使用之外的其他表示形式(例如,如果您是通过网络从另一台计算机接收到该阵列的),则必须转换该表示形式。为了转换表示形式,您必须知道源数据遵循的表示形式。

从理论上讲,您将需要处理不同的符号表示形式,但实际上2的补码是相当普遍的。在实践中实际上相关的一个考虑因素是字节序。

答案 1 :(得分:2)

您可以使用std::memcpy()

#include <iostream>
#include <cstring>

int main() {
    unsigned char bytes[4]{ 0xdd, 0xcc, 0xbb, 0xaa };

    int value;
    std::memcpy(&value, bytes, sizeof(int));

    std::cout << std::hex << value << '\n';
}