对字节大端对齐和小端对齐的理解

         做音频视频处理的过程中,经常看到文档中写着LITTLE ENDIAN或者BIG ENDIAN unsigned integer的文字,其实就是告诉我们用大端或者小端方式处理字节数,例如文件的某一处的16进制数为FF 10 00 00,如果按照

         大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,这种存储模式就类似把数据当做字符串顺序处理,例如:数据中两个字节按顺序为:FE 10 ,它表示的一个数就是0xFE10。

         换句话说:内存的低地址存放着数据高位;

        小端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储方式就是将地址的高低和数据的位结合起来,前面的例子按照小端模式表示,应该为:0x10FE。

        换句话说:内存的低地址存放着数据低位。

例如 char p[2];,它用大端模式表示一个数的计算方式为:

unsigned int  result =p[0];
result =(result <<8)|p[1];

用小端模式表示一个数的计算方式为:

unsigned int  result =p[0];
result =(p[1]<<8)|result;

          我在用的过程中理解后,总结出来我的认识。

你可能感兴趣的:(字节)