#include <stdio.h>
// 定义联合体
union {
unsigned int num;
char bytes[4];
} converter;
int main() {
unsigned int number = 0x12345678; // 示例无符号整数
converter.num = number;
printf("字节数组内容: ");
for (int i = 0; i < 4; i++) {
printf("%02hhx ", converter.bytes[i]);
}
printf("\n");
return 0;
}
数据类型转换原理
- 联合体定义:联合体是一种特殊的数据类型,它允许不同的数据类型共享同一块内存空间。在上述代码中,
converter
联合体包含一个 unsigned int
类型的成员 num
和一个 char
类型的数组 bytes
。这两个成员共享相同的内存地址。
- 数据存储:当我们给
converter.num
赋值时,例如 converter.num = 0x12345678
,这个无符号整数会按照其在内存中的存储方式(通常是小端序,低位字节存储在低地址)存储在联合体的内存空间中。
- 访问字节数组:由于
bytes
和 num
共享内存,我们可以通过访问 bytes
数组来获取 num
在内存中的各个字节。在 for
循环中,我们遍历 bytes
数组并打印每个字节的十六进制值,从而展示无符号整数对应的4个字节的内容。