• 字节序


    字节序

    字节的顺序。一个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类型从网络序转换到主机序

  • 相关阅读:
    Qt5官方demo解析集21——Extending QML
    多封装,少开放。强烈建议C++标准添加class之间的注入机制
    iOS 设计模式之工厂模式
    golang的select典型用法
    Go的异常处理 defer, panic, recover
    Visual Studio Code 的简单试用体验
    在Visual Studio Code中配置GO开发环境
    Go语言开发环境配置
    Go 语言 很牛
    Go将统治下一个10年?Go语言发展现状分析
  • 原文地址:https://www.cnblogs.com/lfxiao/p/9242194.html
Copyright © 2020-2023  润新知