字节序--大端,小端的缘由
基础:
As we all know,字节序有大端和小端。
大端:低地址位存高位,如实际是(十六进制,左边是低地址):12 34,储存是12 34。
小端则相反。
对比:
各执一词,计算机处理是按偏移地址来,从低地址往高地址处理,各有各方便。
大端方便人阅读(没啥用)。
网络中:
网络上传输都用大端,这是约定。
网络序是大端序,主机序可能是大端可能是小端(INTEL,ARM,MIPS等不一样)。
为何要约定呢?
原因在于ip层需要ip和端口进行转发,如果不指定,ip层无法转发。
注意区分字符串和数字,网络传输的都是字符,对于字符串传输没有异议;
而对于数字,要约定先发低位还是先发高位,这就是大端小端的需要。
讨论下:
注意:对于网络来说:先接受的为高地址!
发送时,取低位发送。
接受时,先接受的存放到低地址。
以上情况:
对于字符串,不存在高低之分,一个一个依次发送。
对于数字,需要用字符表示,一般数字有32位,需要4字节,先发高位还是低位呢。
这时需要使这个数字是大端表示的,这样在ip层,端口就不会错。
当然,这只是对于底层的socket操作,高层可以封装使得这个步骤透明。
【本文章出自博客园willaty,转载请注明作者出处,误差欢迎指出~】