现在有一个unsigned char bytes[4]
,我已经知道字节数组是从C ++中的int
生成的。如何将数组转换回int
?
答案 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';
}