zoukankan      html  css  js  c++  java
  • Python2.7-xdrlib

    xdrlib 模块,用于打包和解包 xdr 数据。XDR 提供了一种与体系结构无关的表示数据,解决了数据字节排序的差异、数据字节大小、数据表示和数据对准的方式。使用XDR的应用程序,可以在异构硬件系统上交换数据

    1、模块对象

    1.1 Packer 对象,用于把数据打包成 xdr 格式

    1.1.1 初始化构建类:Packer,不接受任何参数

    1.1.2 实例方法

    get_buffer():字符串形式返回已经打包的缓冲区内数据
    reset():清空缓冲区内已打包的数据

    打包数据都通过 pack_type() 对对应数据类型 type 进行操作,基本所有方法都是接收一个数据参数对其打包,包括 pack_uint(),pack_int(),pack_enum(),pack_bool(),pack_uhyper(),pack_hyper(),pack_float(),pack_double()
    pack_fstring(n, s):打包指定长度字符串 s,n 为字符串长度,但不会被打包。如果字符串需要 4 字节对齐,会自动补空字节(null bytes)
    pack_string(s):打包可变长度字符串 s,字符串的长度会先被打包,然后用 pack_fstring() 打包
    pack_fopaque(n, data):打包指定长度的不透明数据流(opaque data stream),参数同 pack_fstring()
    pack_opaque(data):打包可变长度不透明数据,参数与结果同 pack_string()
    pack_bytes(bytes):打包可变长度字节数据流,参数与结果同 pack_string()
    pack_list(list, pack_item):打包一个同质列表 list,pack_item 是对列表中每个元素调用的打包方法,即 pack_type()
    pack_farray(n, array, pack_item):打包指定长度 n 的列表或数组,长度不会被打包,但如果数组长度不等于 n,会抛出 ValueError,pack_item 同上
    pack_array(list, pack_item):打包可变长度的列表或数组,长度会先被打包,然后用 pack_farray() 打包

    1.2 Unpacker 对象,用于把 xdr 格式数据变回原数据

    1.2.1 初始化构建类:Unpacker(data),data 为待解包数据

    1.2.2 实例方法

    reset(data):重新设置待解包数据至 data
    get_position():返回现在数据缓冲区中的未打包起始位
    set_position(position):设置数据缓冲区中的未打包起始位
    get_buffer():字符串形式返回未打包的缓冲区内数据
    done():指示解包完成,若实际未完成则抛出 Error 异常

    解包数据都通过 unpack_type() 对对应数据类型 type 进行操作,基本所有方法都不接受参数,然后返回解包结果对象,都是在打包的方法前加上 un
    unpack_fstring(n):解包指定长度字符串,n 为期望获得的字符串长度。如果字符串需要 4 字节对齐,会自动补空字节(null bytes)
    unpack_string():解包可变长度字符串 s,字符串的长度会先被解包,然后用 unpack_fstring() 打包
    unpack_fopaque(n):解包指定长度的不透明数据流(opaque data stream),参数同 unpack_fstring()
    unpack_opaque():解包可变长度不透明数据,参数与结果同 unpack_string()
    unpack_bytes():解包可变长度字节数据流,参数与结果同 unpack_string()
    unpack_list(unpack_item):解包一个同质列表,unpack_item 是对列表中每个元素调用的解包方法,即 unpack_type()
    unpack_farray(n, unpack_item):解包指定长度 n 的列表或数组,unpack_item 同上
    unpack_array(unpack_item):解包可变长度的列表或数组,长度会先被解包,然后用 unpack_farray() 打包

    2、模块异常

    xdrlib.Error:异常基类,只有一个 msg 属性,用于描述错误
    xdrlib.ConversionError:从 Error 继承而来,没有额外属性

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    Android Studio复制项目作为一个新的工程
    7-(基础入门篇)关于STM32底层程序使用说明
    6-(基础入门篇)学会编译lua固件,固件的合成
    5-(基础入门篇)学会刷Wi-Fi模块固件(刷LUA版本固件)
    STM32嵌入LUA开发(控制小灯闪耀)
    1-添加自己的Lua执行函数(ESP8266-SDK开发(lua版本))
    android 权限动态申请
    Android应用更新-自动检测版本及自动升级
    Android中AsyncTask的使用
    关于TCP和MQTT之间的转换
  • 原文地址:https://www.cnblogs.com/tccbj/p/8544476.html
Copyright © 2011-2022 走看看