1. 苏葳的备忘录首页
  2. 编程

Python的struct模块和big-endian顺序

python big-endian一个16位长的整数,在内存中的存放次序,可以按内存地址从低往高,存放时按先存前8位还是后8位,来区分为liitle-endian和big-endian两种。简单的理解,big-endian在存放时低8位存低地址,高8位存高地址,就是一溜顺儿。因此同样的一块数据,在不同机器上的解析可能就会出问题。所以在网络传输时,要统一转换为big-endian来传递。在socket库中有htons等几个宏来将本机字节顺序往网络字节顺序转换。

Python中的文件一般用来处理字符串,但也可以处理二进制数据,比如struct模块,若nn=struct(‘h’,8),然后print nn,会发现显示的值为x08x00,与字符串从开始到结束(低地址到高地址)的次序是一致的。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/431.html

发表评论

邮箱地址不会被公开。 必填项已用*标注