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
