做音频视频处理的过程中,经常看到文档中写着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;
我在用的过程中理解后,总结出来我的认识。