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. Java 初级面试题及答案

    1.Java中的重载与重写有什么区别 重载(Overload)是让类以统一的方式处理不同类型数据的一种手段,实质表现就是多个具有不同的参数个数或者类型的同名函数(返回值类型可随意,不能以返回类型作为重 ...

  2. Hibernate中的事务隔离问题(脏读、不可重复读、幻读)

    Hibernate中的事务隔离问题(脏读.不可重复读.幻读) 1.事务的特性 事务的四个特性: 1)原子性:事务是进行数据库操作的最小单位,所以组成事务的各种操作是不可分割的 2)一致性:组成事务的各 ...

  3. python移位运算符

    1,二进制方式 >>> bin( 1 ) '0b1' >>> bin( 10 ) '0b1010' >>> a = 0b10 >>&g ...

  4. 【 js 基础 】【 源码学习 】柯里化和箭头函数

    最近在看 redux 的源码,代码结构很简单,主要就是6个文件,其中 index.js 负责将剩余5个文件中定义的方法 export 出来,其他5个文件各自负责一个方法的实现. 大部分代码比较简单,很 ...

  5. Vue知识点(面试常见点)

    v-bind和v-model的区别 1.v-bind用来绑定数据和属性以及表达式,缩写为':' 2.v-model使用在表单中,实现双向数据绑定的,在表单元素外使用不起作用 什么是 mvvm? MVV ...

  6. vue中监听window.resize的变化

    我只想说每个人遇到的bug真的不能一概而论,解决办法也会有不同.在vue中使用echarts的时候,会想要实现window.resize窗体变化大小的时候让图形大小跟着变化.实现的过程中各种bug,也 ...

  7. 解决stackoverflow打开缓慢的问题

    一.原因: 因为stackoverflow用的是谷歌的api,在国内谷歌是被禁用的,所以才会打开缓慢,并不是stackverflow被墙 二.解决方法: 1.如果你正在使用的是火狐浏览器,那么请按照下 ...

  8. 微信小程序< 2 > ~ 微信小程序之头条新闻

    简介 上一篇文章,主要是介绍下微信小程序的开发环境安装和微信组件什么的一些基础的开发内容,所以最近一直在业余找练手的机会.由于之前没有接触过JS,自己学习起来还算是比较的吃力,一点一点的来吧!要持久. ...

  9. mysql 安全模式

    今天,执行一条delete语句的时候报错如下: Error Code: 1175. You are using safe update mode and you tried to update a t ...

  10. easyui中日期格式化

    <body>    <div id="list"></div>     <script type="text/javascrip ...