C++字节数组到整数

C++ byte array to int

本文关键字:整数 数组 字节数 字节 C++      更新时间:2023-10-16

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

您可以使用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';
}
我已经

知道字节数组是从 C++ 中的 int 生成的。

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

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

但是,如果数组可能遵循 CPU 使用的其他表示形式(例如,如果您通过网络从另一台计算机接收阵列(,则必须转换表示形式。为了转换制图表达,您必须知道源数据遵循什么表示。

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