码迷,mamicode.com
首页 > 其他好文 > 详细

大端和小端

时间:2014-08-11 17:17:22      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:des   cWeb   style   blog   color   使用   os   io   

一、首先需要明白一点,术语“大端”和“小端”表示多个字节的哪一端(大端或小端)存储在该值的起始地址;

小端:将低序字节存储在起始地址;大端:将高序字节存储在起始地址;

对于一个16位的整数,内存中的存储方式如下图所示:

bubuko.com,布布扣

但遗憾的是,二者并没有标准可循,两种格式都有系统在使用,下面程序可以判断主机字节序:

 1 int main(int argc, char **argv)
 2 {
 3     union {
 4       short  s;
 5       char   c[sizeof(short)];
 6     } un;
 7 
 8     un.s = 0x0102;
 9     printf("%s: ", CPU_VENDOR_OS);
10     if (sizeof(short) == 2) {
11         if (un.c[0] == 1 && un.c[1] == 2)
12             printf("big-endian\n");
13         else if (un.c[0] == 2 && un.c[1] == 1)
14             printf("little-endian\n");
15         else
16             printf("unknown\n");
17     } else
18         printf("sizeof(short) = %d\n", sizeof(short));
19 
20     exit(0);
21 }

通过巧妙使用共用体的特性,此程序可以检测出主机字节序;

二、把话题转到网络应用中,网络协议必须要指定一个网络字节序,因为16位的端口号和32位的IPv4地址在网络传输中都要使顺序达成一致;

因历史原因,网际协议使用大端字节序来传送多字节整数;

关于主机字节序和网络字节序的转换,会用到以下四个函数:

bubuko.com,布布扣

大端和小端,布布扣,bubuko.com

大端和小端

标签:des   cWeb   style   blog   color   使用   os   io   

原文地址:http://www.cnblogs.com/thinker-lj/p/3904930.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!