• 字节序


    考虑一个16位整数,它由2个字节组成。内存中存储这两个字节有两种方法:

    一种是将低序字节存储在起始地址,这称为小端字节序。

    另一种方法是将高序字节存储在起初地址,这称为大端字节。

    测试程序:

    利用union类型 —— 可以利用union类型数据的特点:所有成员的起始地址一致

    1. #include<stdio.h>  
    2. #include<stdlib.h>  
    3. static union  
    4. {  
    5.     char a[4];  
    6.     unsigned long ul;  
    7. }endian = {{'L', '?', '?', 'B'}};  
    8. #define ENDIAN ((char)endian.ul)  
    9.   
    10. int main()  
    11. {  
    12.     printf("%c/n", ENDIAN);  
    13.     system("pause");  
    14.     return 0;  
    15. }  

      大端模式(Big-endian):数据的低字节存放在高地址中。

      小端模式(Little-endian):数据的低字节存放在低地址中。

      union型数据所占的空间等于其最大的成员所占的空间,对union型成员的存取都是相对于该联合体基地址的偏移量为0处开始,

      即,联合体的访问不论对哪个变量的存取都是从union的首地址位置开始

    -----------------------------------------------------------------------------

     #include<stdio.h>
     #include<stdlib.h>
     
     int main(int argc, char** argv)
     {
         union{
             short s;
             char c[sizeof(short)];
         }un;
         un.s = 0x0102;\01是数据的高位字节 02是数据的低位字节
     
         if(2 == sizeof(short))
         {
             if(un.c[0] == 1 && un.c[1] == 2)
             {
                 printf("big-endian
    ");
             }
             else if(un.c[0] == 2  && un.c[1] == 1)
             {
                 printf("little-endian
    ");
             }
    		 else
    		 {
    			printf("unkonwn
    ");
    		 }
         }
         else
         {
             printf("sizeof(short) = %d
    ", sizeof(short));
         }
     
         exit(0);
     }
    

      

    字节排序函数:

    htons

    htonl

    ntohs

    ntohl

    h代表host

    n代表network

    s代表short

    l代表long

    只需要调用适当的函数在 主机字节序 和 网络字节序 之间转换某个给定的值,不需要去关心主机字节序和网络字节序的真实值。

  • 相关阅读:
    WPF e.Systemkey的一个坑
    Codeforces Round #375 (Div. 2) ABCDE
    主席树模板(poj2104)
    hdu5909-Tree Cutting(树形dp)
    HYSBZ 2243-染色 (树链剖分)
    POJ3237-Tree (树链剖分,线段树区间更新+点更新+区间查询)
    POJ2763-Housewife Wind(树链剖分)
    2016东北四省赛 小结
    HDU3966-Aragorn's Story(树链剖分)
    POJ 2749--Building roads(2-SAT)
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/4789696.html
Copyright © 2020-2023  润新知