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 继承而来,没有额外属性

Python2.7-xdrlib的更多相关文章

  1. 让VIM支持Python2 by update-alternatives

    前言  Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Python2,那就来场"生命贵在折 ...

  2. 烂泥:python2.7和python3.5源码安装

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前几天在centos6.6安装ansible时,一直提示python版本不对,导致不能安 ...

  3. python版本随意切换之python2.7+django1.8.7+uwsgi+nginx源码包部署。

    资源准备: wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz wget https://www.djangoproject ...

  4. windows XP上实现python2.7.5和python3.4.3共存

    windows XP上实现python2.7.5和python3.4.3共存过程记录: 1. 首先安装python2.7.5和python3.4.3,两个版本安装顺序不分前后; 2. 检查系统环境变量 ...

  5. Python2 基本数据结构源码解析

    Python2 基本数据结构源码解析 Contents 0x00. Preface 0x01. PyObject 0x01. PyIntObject 0x02. PyFloatObject 0x04. ...

  6. Ubuntu安装Python2.7,nodejs

    安装Python2.7 sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7sudo apt-get update sudo apt-get ...

  7. Windows下安装python2和python3双版本

    现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里我们只介绍下Windows(我用的Win10)环境下的pytho ...

  8. [python]CentOS 6下安装Python2.7

    安装方法 如果在CentOS上自己编译安装过python2.7,使用过程中会发现有些标准库没有安装之类的问题. 逛别人博客的时候发现,一个便捷的方法:使用RHSCL的全称是Red Hat Softwa ...

  9. 在CentOS 6.5上安装python2.7

    1.yum groupinstall “Development tools” 2.安装编译Python需要的组件 yum install zlib-devel bzip2-devel openssl- ...

  10. python2不同版本安装json模块

    1.常用json库主要有json-py和simplejson 1) json-py 包含json和minjson,用法一样 Python (#, Jan , ::) [GCC (Red Hat -)] ...

随机推荐

  1. Android Interpolator(插值器)

    1.概述 插值器定义如何计算动画中的特定值作为时间的函数.例如,指定动画在整个动画中线性发生,这意味着动画在整个时间内均匀移动,或者指定动画以使用非线性时间,例如,在开始或结束时使用加速或减速动画. ...

  2. Codeforces675D(SummerTrainingDay06-J)

    D. Tree Construction time limit per test:2 seconds memory limit per test:256 megabytes input:standar ...

  3. js-设计模式学习笔记-策略模式

    策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换(相互替换:表现为它们具有相同的目标和意图). 策略模式的目的是讲算法的使用与算法的实现分离开来. 一个基于策略模式的程 ...

  4. 如何用JS获取页面上的所有标签

    最近忙的一匹,忙着大保健,都来不及写博客,今天特意抽出点时间来写一写 前两天看到一个题,是问如何从页面上获取所有的标签的并查看他们的数量,感觉还是有点意思的,所以给大家来搞一下子 我们先来捋捋思路,那 ...

  5. 关于flex布局兼容

    (做个记录) 一.W3C各个版本的flex 2009 version 标志:display: box; or a property that is box-{*} (eg. box-pack) 201 ...

  6. CSS3 鼠标划上图片放大

    td img{transition: all 1s}/*鼠标划上,图片1s全部显示完成*/ td img:hover{ transform: scale(5) translateX(50%) tran ...

  7. element-ui table

    额,最近有点频繁记录.感觉遇到了很多的问题.然后不断的查,不断的尝试修改.然后得到解决.还是记录关于element-ui的使用.这次是关于表格的使用. 表格使用其实平时用的话也就那么几个属性.虽然官网 ...

  8. 前端开发笔记(3)css基础(中)

    上一篇中我们学习了html的标准文档流,下面我们先来看看如何脱离标准流. 脱离标准流 css中一共有三种方法脱离标准流 浮动 绝对定位 固定定位 浮动 我们要搞清楚什么是浮动,先来看一个标准文档流的例 ...

  9. 如何删除PeopleSoft Process Definition

    PeopleSoft没有在页面提供删除Process Definition的快捷方式. 可以通过AD创建一个新的project加入这个process definition,在upgrade tab选择 ...

  10. vue与原生混合开发

    前段时间,做了一个混合开发的项目,主要是以vue框架开发h5页面,使用cordova作为中间沟通桥梁,实现了h5与安卓.iOS的混合开发,由于从事iOS开发,h5也是刚接触不久,很多深入原理还不太清楚 ...