首页 > 编程知识 正文

网络字节序和主机字节序转换,主机字节序和本地字节序

时间:2023-05-03 11:42:44 阅读:218331 作者:3177

 

#define BigLittleSwap16(A) ((((unsigned short int)(A) & 0xff00) >> 8) | (((unsigned short int)(A) & 0x00ff) << 8)) #define BigLittleSwap32(A) ((((unsigned int)(A) & 0xff000000) >> 24) | (((unsigned int)(A) & 0x00ff0000) >> 8) | (((unsigned int)(A) & 0x0000ff00) << 8) | (((unsigned int)(A) & 0x000000ff) << 24)) int checkCPUendian() { union{ unsigned long int i; unsigned char s[4]; }c; c.i=0x12345678; return (0x12 == c.s[0]); } quint32 net2hostl(unsigned short int a) { return checkCPUendian() ? a : BigLittleSwap32(a); } quint32 hostnetl(unsigned short int a) { return checkCPUendian() ? a : BigLittleSwap32(a); } quint16 net2hosts(unsigned short int a) { return checkCPUendian() ? a : BigLittleSwap16(a); } quint16 hostnets(unsigned short int a) { return checkCPUendian() ? a : BigLittleSwap16(a); }

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。