c语言大小端数据转换代码
时间: 2024-07-16 20:00:38 浏览: 68
C语言代码实现大小端转换
在C语言中,处理不同字节序(大端模式和小端模式)的数据转换通常涉及到结构体或联合体的内存操作,因为不同的平台可能有不同的字节顺序。以下是一个简单的代码示例,展示了如何在大端模式和小端模式之间进行基本的整数类型的转换:
```c
#include <stdio.h>
#include <arpa/inet.h> // 包含 htonl 和 ntohl 函数
// 假设我们有一个包含一个int的结构体
typedef struct {
int data;
} MyStruct;
// 大端模式到小端模式(网络字节序)
void convertBigToLittle(MyStruct *bigEndian) {
bigEndian->data = ntohl(bigEndian->data);
}
// 小端模式到大端模式
void convertLittleToBig(MyStruct *littleEndian) {
bigEndian->data = htonl(littleEndian->data);
}
int main() {
MyStruct littleEndianData = {1234567890};
printf("Little-endian: %d\n", littleEndianData.data);
// 转换为大端模式
convertLittleToBig(&littleEndianData);
printf("Big-endian after conversion: %d\n", littleEndianData.data);
// 或者直接从网络数据接收并转换
char bigEndianBytes[sizeof(MyStruct)];
// 假设从网络接收bigEndianBytes
memcpy(bigEndianBytes, &littleEndianData.data, sizeof(int));
MyStruct *bigEndian = (MyStruct*)bigEndianBytes;
convertBigToLittle(bigEndian);
printf("Big-endian received from network: %d\n", bigEndian->data);
return 0;
}
阅读全文