繁体   English   中英

C ++字节数组转换为int

[英]C++ byte array to int

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

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

知道如何从int生成数组至关重要。 如果数组是通过简单地在同一CPU上复制字节生成的,则可以通过简单地复制来转换回:

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

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

从理论上讲,您需要处理不同的符号表示形式,但实际上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';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM