美文网首页
python struct

python struct

作者: proud2008 | 来源:发表于2020-05-22 14:14 被阅读0次

此模块可以执行 Python 值和以 Python bytes 对象之间的转换
https://www.liaoxuefeng.com/wiki/1016959663602400/1017685387246080

image.png image.png
import struct
import sys
from io import BytesIO;

s = b'\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00'
d1 = struct.unpack('<2sIIIIIIHH', s)
print(d1)
print("&"*10)
d1 = struct.unpack('<2cIIIIIIHH', s)
print(d1)
print(d1[0] + d1[1])
io1 = BytesIO()
io1.write(d1[0])
io1.write(d1[1])
print(str(io1.getvalue().decode("utf-8")))

print("-" * 10)
print(sys.byteorder)
record = b'raymond   \x32\x12\x08\x01\x08'
name, serialnum, school, gradelevel = struct.unpack('<10sHHb', record)
print(name, serialnum, school, gradelevel)
print("+" * 10)
print(struct.pack('cq', b'*', 0x12131415))  # b'*\x00\x00\x00\x00\x00\x00\x00\x15\x14\x13\x12\x00\x00\x00\x00'
print(struct.pack('qc', 0x12131415, b'*'))  # b'\x15\x14\x13\x12\x00\x00\x00\x00*'
print(struct.pack('>cq', b'*', 0x12131415))  # b'*\x00\x00\x00\x00\x12\x13\x14\x15'
print(struct.pack('>qc', 0x12131415, b'*'))  # b'\x00\x00\x00\x00\x12\x13\x14\x15*'
print(struct.calcsize('ci'))  # 8
print(struct.calcsize('ic'))  # 5
print(struct.calcsize('>ci'))  # 5
print(struct.calcsize('<ci'))  # 5
print("=" * 10)
s = b'*\x00\x00\x00\x00\x12\x13\x14\x15'
print(struct.unpack(">cq", s))  # (b'*', 303240213)
print('0x%x' % struct.unpack(">cq", s)[1])  # 16进制显示 0x12131415
print('0x%x' % struct.unpack("<cq", s)[1])  # 0x1514131200000000 顺序是倒的 最高的一个字节在前面

# print(struct.unpack("<cq",s))
# print(struct.unpack("=cq",s))
# print(struct.unpack("?cq",s))

(b'BM', 691256, 0, 54, 40, 640, 360, 1, 24)
&&&&&&&&&&
(b'B', b'M', 691256, 0, 54, 40, 640, 360, 1, 24)
b'BM'
BM
----------
little
b'raymond   ' 4658 264 8
++++++++++
b'*\x00\x00\x00\x00\x00\x00\x00\x15\x14\x13\x12\x00\x00\x00\x00'
b'\x15\x14\x13\x12\x00\x00\x00\x00*'
b'*\x00\x00\x00\x00\x12\x13\x14\x15'
b'\x00\x00\x00\x00\x12\x13\x14\x15*'
8
5
5
5
==========
(b'*', 303240213)
0x12131415
0x1514131200000000

相关文章

  • Python 字典基础回顾

    关键词 python、dict、data struct、python字典、python collections、...

  • struct模块简介

    struct简介 使用struct可以在python数值和C的结构之间进行转换,表示方式为Python strin...

  • 2018-06-30 Python Struct

    Python使用struct处理二进制 例如: import struct a = 20 b = 400 s = ...

  • 时间模块

    python 中 time 有三种格式: float struct tuple(time.struct_time ...

  • python struct

    此模块可以执行 Python 值和以 Python bytes 对象之间的转换https://www.liaoxu...

  • Day15内建模块struct&hashlib&

    struct Python提供了一个struct模块来解决bytes和其他二进制数据类型的转换。struct的pa...

  • 常用内建模块2

    struct Python提供了一个struct模块来解决bytes和其他二进制数据类型的转换。struct的pa...

  • python处理二进制数据

    struct 处理二进制数据离不开python的struct模块,struct理解上你可以把它理解为c语言的结构体...

  • Python struct模块

    1 struct模块 pack struct.pack 用于将Python的值根据格式符号,转为字符串,注意返回的...

  • python struct使用

    struct 官方解释:Interpret strings as packed binary data. 具体作用...

网友评论

      本文标题:python struct

      本文链接:https://www.haomeiwen.com/subject/ivyqahtx.html