zoukankan      html  css  js  c++  java
  • 字节序

    字节序

    字节的顺序。一个16位(两字节)整数有高8位和低8位,比如 使用2个字节表示一个整数4 ,有的系统会将4表示成:00000000  00000100 ,高8位在前,低8位在后,称为大端字节序;有的系统会将4表示成:00000100  00000000,低8位在前,高8位在后,称为小端字节序;

    主机字节序

    整数在内存中保存的字节顺序,所有的32位系统都是小端字节序,Intel和AMD的64位系统也是小端字节序

    网络字节序

    TCP/IP中规定好的一种数据表示格式,与具体的CPU类型、操作系统无关,从而保证数据在不同的主机之间传输时能够正确的解析。网络字节序采用大端表示

    查看系统是大端还是小端 

    我们可以通过python模块 struct.pack 将一个整数转换位十六进制,通过字节序的定义判断自己的系统时大端还是小端字节序

    可以看出我的系统是小端字节序

    如果两个主机要传输数据,主机A要给主机B发数据,那么主机A应该将数据按大端表示,然后通过网络传输,主机B接收到网络字节流后,直接按大端解析,这样就不会出错了。

    字节序转换

    有的时候我们会在网络字节序和主机字节序中进行转换,python的socket模块提供了4中转换方法:

    htons 把unsigned short类型从主机序转换到网络序
    htonl 把unsigned long类型从主机序转换到网络序
    ntohs 把unsigned short类型从网络序转换到主机序
    ntohl 把unsigned long类型从网络序转换到主机序

  • 相关阅读:
    token
    id
    vim
    http_proxy
    brew
    认证
    go
    linux 磁盘管理
    vmware
    vmware fusion
  • 原文地址:https://www.cnblogs.com/lfxiao/p/9242194.html
Copyright © 2011-2022 走看看