zoukankan      html  css  js  c++  java
  • Python-Struct

    从一个例子开始:

    >>> from struct import *
    >>> pack('hhl',1655, 255, 370)
    b'wx06xffx00rx01x00x00'
    >>> unpack('hhl', b'wx06xffx00rx01x00x00')
    (1655, 255, 370)
    >>> calcsize('hhl')
    8
    

    struct.pack(format, v1, v2, ...)

    返回:一个字节对象

    打包v1,v2...16进制值,默认低位在前高位在后

    >>> from struct import *
    >>> pack('hhl',1655, 255, 370)
    b'wx06xffx00rx01x00x00'
    
    b'wx06xffx00rx01x00x00'.hex()
    '7706ff0072010000'
    

    16进制,2字符占1字节

    如图:

    struct.unpack(format, buffer)

    返回:一个元组

    解压一个字节对象为元组

    >>> unpack('hhl', b'wx06xffx00rx01x00x00')
    (1655, 255, 370)
    

    struct.calcsize(format)

    返回:返回定义格式的字节大小

    >>> calcsize('hhl')
    8
    

    hhl:2+2+4 =8

    完整示例

    import struct
    
    #默认低位在前,高位在后,“<”模式
    b = struct.pack('ihb', 255, 22, 37)
    s = struct.unpack('ihb',b)
    print(b)
    print(s)
    print("*******************")
    
    data = [255, 22, 37]
    #网络结构 :“!”和“>”相同,高位在前
    buffer = struct.pack('!ihb', *data)
    buffer_u =struct.unpack('!ihb', buffer)
    print(buffer)
    print(buffer_u)
    print("*******************")
    
    # 压缩解压不同模式,则解压错误
    buffer_s =struct.unpack('ihb', buffer)  
    print(buffer_s)
    
    
    b'xffx00x16x00%x00x00x00'
    (255, 22, 37)
    *******************
    b'x00xffx00x16x00x00x00%'
    (255, 22, 37)
    *******************
    (-256, 5632, 620756992)
    
  • 相关阅读:
    二维数组
    快速排序
    冒泡排序2
    对char类型数组的英文字母进行冒泡排序
    对char类型的数组进行冒泡排序
    冒泡排序
    对数组随机赋值,并输出(Arrays.toString(arr))
    数组声明的几种方式以及length属性
    猜拳游戏二
    二维小波包重构wprec2wprcoef
  • 原文地址:https://www.cnblogs.com/xuwei1/p/9981033.html
Copyright © 2011-2022 走看看