美文网首页
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 struct

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