文件格式的LE和BE(L/B)是干什么的

A@NAZOrip
A@NAZOrip 2020年02月10日
  • 在其它设备中阅读本文章
这两个单词的诞生距今已经有~50年的历史了。
_大小endian图片_
  在YUV420P10LE,YUV422P10BE等等例子中,LE和BE这两个字母说的是little-endianbig-endian。区别是,"little-endian 小位先写"在x86架构处理器上的效率比符合人类书写的"big-endian 大位先写"更高,而ARM架构的处理器为了增强兼容,也多用LE书写数据。

  LE的书写方式是*先写*最不足道位LSD,例子-1011,1100,1101,0010,0110,1010,注意整个数被倒过来了,不仅仅是换了数位:
0x0000000001--------------LSD-0101
0x0000000002------------------0110
0x0000000003------------------0100
0x0000000004------------------1011
0x0000000005------------------0011
0x0000000006--------------MSD-1101
BE的书写方式是先写最大道位MSD,例子-1011,1100,1101,0010,0110,1010:
0x0000000001--------------MSD-1011
0x0000000002------------------1100
0x0000000003------------------1101
0x0000000004------------------0010
0x0000000005------------------0110
0x0000000006--------------LSD-1010
  这种设计来源于几十年前的处理器信道带宽(Bus width)窄,如果用BE方法计算大数,那么处理器就必须先导入全部的数再开始算,类似人类将整个算式写下来的步骤。
  但若使用LE,处理器就可以在导入全部的数之前就开始计算,这种精神分裂的行为源于处理器几十年前就能做到每秒上百万时钟(MHZ)的速度。而现在的处理器速度更快,所以一般情况下,LE还是BE的速度差距就不大了,但理论上对于大数据,视频编码,3A游戏,大型渲染等需要一切计算资源的任务来说,在x86架构的处理器上用LE就对了。

全文完,转载请注明地址❀


参考:
[1] stackoverflow.com/questions/4752715/why-are-both-little-and-big-endian-in-use