Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7708
  • 博文数量: 2
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-25 12:51
文章分类

全部博文(2)

文章存档

2016年(2)

我的朋友
最近访客

分类: C/C++

2016-08-25 15:32:06

      大端小端在网络中的应用:
一、大小端程序判断
     大端:高字节存放在低地址(即大数存放在底端)
     小端:低字节存放在低地址(即小数存放在底端

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. union word
  4. {
  5.     int        a;
  6.     char    b;
  7. } c;
  8. int checkCPU(void)
  9. {
  10.     c.a = 1;
  11.     printf("c.b=%d\n",c.b);
  12.     return (c.b==1);
  13. }
  14. int main(void)
  15. {
  16.     int i;
  17.     i= checkCPU();
  18.     if(i==0)
  19.         printf("this is Big_endian\n");
  20.     else if(i==1)
  21.         printf("this is Little_endian\n");
  22.     return 0;
  23. }
二、linux函数字节顺序转换
uint32_t htonl(uint32_t hostlong); //long  host to net
uint16_t htons(uint16_t hostshort);//short host to net
uint32_t ntohl(uint32_t netlong);  //long  net  to host
uint16_t ntohs(uint16_t netshort); //short net  to host

三、宏定义实现
点击(此处)折叠或打开
  1. //*****************************************************************************
  2. // htonl/ntohl - big endian/little endian byte swapping macros for
  3. // 32-bit (long) values
  4. //*****************************************************************************
  5. #ifndef htonl
  6.     #define htonl(a) \
  7.         ((((a) >> 24) & 0x000000ff) | \
  8.          (((a) >> 8) & 0x0000ff00) | \
  9.          (((a) << 8) & 0x00ff0000) | \
  10.          (((a) << 24) & 0xff000000))
  11. #endif

  12. #ifndef ntohl
  13.     #define ntohl(a) htonl((a))
  14. #endif

  15. //*****************************************************************************
  16. // htons/ntohs - big endian/little endian byte swapping macros for
  17. // 16-bit (short) values
  18. //*****************************************************************************
  19. #ifndef htons
  20.     #define htons(a) \
  21.         ((((a) >> 8) & 0x00ff) | \
  22.          (((a) << 8) & 0xff00))
  23. #endif

  24. #ifndef ntohs
  25.     #define ntohs(a) htons((a))
  26. #endif

阅读(717) | 评论(0) | 转发(0) |
0

上一篇:IP地址转换函数例子

下一篇:没有了

给主人留下些什么吧!~~