## 11.17.2 Unpacker Objects

`Unpacker` is the complementary class which unpacks XDR data values from a string buffer, and has the following methods:

`__init__` (data)
  Instantiates an `Unpacker` object with the string buffer data.

`reset` (data)
  Resets the string buffer with the given data.

`get_position` ()
  Returns the current unpack position in the data buffer.

`set_position` (position)
  Sets the data buffer unpack position to position. You should be careful about using `get_position()` and `set_position()`.

`get_buffer` ()
  Returns the current unpack data buffer as a string.

`done` ()
  Indicates unpack completion. Raises an `xdrlib.Error` exception if all of the data has not been unpacked.

In addition, every data type that can be packed with a `Packer`, can be unpacked with an `Unpacker`. Unpacking methods are of the form `unpack_type`, and take no arguments. They return the unpacked object.

`unpack_float` ()
  Unpacks a single-precision floating point number.

`unpack_double` ()
  Unpacks a double-precision floating point number, similarly to `unpack_float`.

In addition, the following methods unpack strings, bytes, and opaque data:

`unpack_fstring` (n)
  Unpacks and returns a fixed length string. n is the number of characters expected. Padding with null bytes to guaranteed 4 byte alignment is assumed.

`unpack_fopaque` (n)
  Unpacks and returns a fixed length opaque data stream, similarly to `unpack_fstring`.

`unpack_string` ()
  Unpacks and returns a variable length string. The length of the string is first unpacked as an unsigned integer, then the string data is unpacked with `unpack_fstring`.

`unpack_opaque` ()
  Unpacks and returns a variable length opaque data string, similarly to `unpack_string`.

`unpack_bytes` ()
  Unpacks and returns a variable length byte stream, similarly to `unpack_string`.

The following methods support unpacking arrays and lists:

`unpack_list` (unpack_item)
  Unpacks and returns a list of homogeneous items. The list is unpacked one element at a time by first unpacking an unsigned integer flag. If the flag is `1`, then the item is unpacked and appended to the list. A flag of `0` indicates the end of the list. unpack_item is the function that is called to unpack the items.

`unpack_farray` (n, unpack_item)
  Unpacks and returns (as a list) a fixed length array of homogeneous items. n is number of list elements to expect in the buffer. As above, unpack_item is the function used to unpack each element.

`unpack_array` (unpack_item)
  Unpacks and returns a variable length list of homogeneous items. First, the length of the list is unpacked as an unsigned integer, then each element is unpacked as in `unpack_farray` above.