当前位置:首页 C++ > 正文

C++ int 与 byte[] 的相互转换

作者:野牛程序员:2023-11-09 11:47:58 C++阅读 4005

在C++中,将整数(int)与字节数组(byte[])相互转换通常需要使用位运算和类型强制转换。以下是示例代码,演示如何在C++中执行这种转换:

将int转换为byte[]:

int num = 12345; // 要转换的整数
unsigned char bytes[4]; // 存储字节数组的缓冲区

bytes[0] = (num >> 24) & 0xFF;
bytes[1] = (num >> 16) & 0xFF;
bytes[2] = (num >> 8) & 0xFF;
bytes[3] = num & 0xFF;

将byte[]转换为int:

unsigned char bytes[4]; // 存储字节数组的缓冲区
int num;
// 假设bytes包含要转换的字节数据
num = (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];

请注意,这些示例假设整数是4字节长(32位),并且字节数组也是4字节长。如果整数或字节数组的大小不同,需要相应地调整上述代码中的位移和掩码。此外,还需要注意机器的字节顺序(大端或小端),以确保正确的转换。

以下是一个完整示例,演示如何在C++中将int和byte[]相互转换的过程。这个示例将一个整数转换为字节数组,然后再将字节数组转换回整数。

#include <iostream>

void intToByteArray(int num, unsigned char bytes[4]) {
    bytes[0] = (num >> 24) & 0xFF;
    bytes[1] = (num >> 16) & 0xFF;
    bytes[2] = (num >> 8) & 0xFF;
    bytes[3] = num & 0xFF;
}

int byteArrayToInt(const unsigned char bytes[4]) {
    return (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3];
}

int main() {
    int originalNumber = 12345;
    unsigned char byteArray[4];

    // 将整数转换为字节数组
    intToByteArray(originalNumber, byteArray);

    // 打印字节数组的内容
    std::cout << "Byte Array: ";
    for (int i = 0; i < 4; i++) {
        std::cout << static_cast<int>(byteArray[i]) << " ";
    }
    std::cout << std::endl;

    // 将字节数组转换回整数
    int convertedNumber = byteArrayToInt(byteArray);

    std::cout << "Converted Number: " << convertedNumber << std::endl;

    return 0;
}

这个示例定义了两函数,一个用于将整数转换为字节数组,另一个用于将字节数组转换回整数。然后,在main函数中,它演示了如何使用这两个函数进行转换并打印结果。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击