字节序--大端,小端的缘由

基础:

As we all know,字节序有大端和小端。

大端:低地址位存高位,如实际是(十六进制,左边是低地址):12 34,储存是12 34。

小端则相反。

对比:

各执一词,计算机处理是按偏移地址来,从低地址往高地址处理,各有各方便。

大端方便人阅读(没啥用)。

网络中:

网络上传输都用大端,这是约定。

网络序是大端序,主机序可能是大端可能是小端(INTEL,ARM,MIPS等不一样)。

为何要约定呢?

原因在于ip层需要ip和端口进行转发,如果不指定,ip层无法转发。

注意区分字符串和数字,网络传输的都是字符,对于字符串传输没有异议;

对于数字,要约定先发低位还是先发高位,这就是大端小端的需要。

讨论下:

注意:对于网络来说:先接受的为高地址!

  发送时,取低位发送。

  接受时,先接受的存放到低地址。

以上情况:

  对于字符串,不存在高低之分,一个一个依次发送。

  对于数字,需要用字符表示,一般数字有32位,需要4字节,先发高位还是低位呢

  这时需要使这个数字是大端表示的,这样在ip层,端口就不会错。

  当然,这只是对于底层的socket操作,高层可以封装使得这个步骤透明。

posted on 2018-02-02 13:29  willaty  阅读(562)  评论(0编辑  收藏  举报

导航