xdrlib —编码和解码 XDR 数据

源代码: Lib/xdrlib.py


xdrlib模块支持 1987 年 6 月由 Sun Microsystems,Inc.编写的 RFC 1014中描述的外部数据表示标准。它支持 RFC 中描述的大多数数据类型。

xdrlib模块定义了两个类,一个用于将变量打包为 XDR 表示形式,另一个用于从 XDR 表示中解包。还有两个异常类。

See also

  • RFC 1014-XDR:外部数据表示标准

  • 该 RFC 定义了数据的编码,该数据在最初编写该模块时为 XDR。显然已被 RFC 1832淘汰。

  • RFC 1832-XDR:外部数据表示标准

  • 更新的 RFC 提供了修订的 XDR 定义。

Packer Objects

Packer个实例具有以下方法:

通常,可以pass调用适当的pack_type()方法来打包任何最常见的 XDR 数据类型。每个方法采用一个参数,即要打包的值。支持以下简单的数据类型打包方法:pack_uint()pack_int()pack_enum()pack_bool()pack_uhyper()pack_hyper()

以下方法支持打包字符串,字节和不透明数据:

以下方法支持打包数组和列表:

例如,要打包整数列表,代码可能如下所示:

import xdrlib
p = xdrlib.Packer()
p.pack_list([1, 2, 3], p.pack_int)

Unpacker Objects

Unpacker类提供以下方法:

此外,可以用Packer打包的每种数据类型都可以用Unpacker打包。解包方法的格式为unpack_type(),并且不带参数。他们返回解包的对象。

此外,以下方法还可以解包字符串,字节和不透明数据:

以下方法支持解压缩数组和列表:

Exceptions

此模块中的异常编码为类实例:

这是一个如何捕获这些异常之一的示例:

import xdrlib
p = xdrlib.Packer()
try:
    p.pack_double(8.01)
except xdrlib.ConversionError as instance:
    print('packing the double failed:', instance.msg)
首页