Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 [ 121 ] 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

длина которой заранее неизвестна. Для каждого элемента последовательности сначала упаковывается 1 (как беззнаковое целое), затем значение элемента, с помощью метода (функции) pack item. По достижении конца списка упаковывается 0 (как беззнаковое целое).

Например, для упаковки списка целых чисел можно использовать примерно следующий код:

import xdrlib

p = xdrlib.Packer()

p.pack list([1, 2, 3], p.pack int)

pack farray(n, array, pack item)

Записывают в буфер XDR-представление гомогенной последовательности array фиксированной длины n. Длина последовательности не сохраняется, но, если указанная длина последовательности не равна len( array) , генерируется исключение ValueError. Для упаковки каждого элемента используется метод (функция) pack item.

pack array( array, pack item)

Записывают в буфер XDR-представление гомогенной последовательности array переменной длиной. Сначала сохраняется длина последовательности, затем, с помощью метода (функции) pack item упаковываются элементы последовательности.

Экземпляры класса Unpacker предоставляют методы для выполнения обратного преобразования:

reset( data)

Устанавливает буфер с упакованными данными равным строке data.

get position ()

Возвращает текущую позицию в буфере.

set position( pos)

Устанавливает указатель на позицию pos в буфере. Будьте осторожны, используя этот метод.

get buffer()

Возвращает текущее значение буфера с упакованными данными в виде строки. done()

Указывает на завершение распаковки данных. Генерирует исключение, если не все данные были распакованы.



28.5. xdrlib - представление данных в формате XDR 381

unpack uint()

unpack int()

unpack enum()

unpack bool()

unpack uhyper()

unpack hyper()

unpack float()

unpack double()

Интерпретирует данные в буфере как XDR-представление значения соответствующего простого типа и возвращает распакованное значение.

unpack fstring( n)

unpack fopaque( n)

Интерпретирует данные в буфере как XDR-представление строки фиксированной длины n. Ожидается, что представление строки дополнено нулевыми байтами для обеспечения выравнивания к 4 байтам. Возвращает распакованное значение в виде строки.

unpack string() unpack opaque() unpack bytes()

Интерпретирует данные в буфере как XDR-представление строки переменной длины. Ожидается, что длина строки упакована в виде целого беззнакового числа. Возвращает распакованное значение в виде строки.

unpack list(unpack item)

Интерпретирует данные в буфере как XDR-представление последовательности неизвестной длины. Ожидается, что перед каждым элементом последовательности упакована 1 в виде целого беззнакового, а в конце последовательности упакован 0. Для распаковки элементов последовательности использует метод (функцию) unpack item, распакованную последовательность возвращает в виде списка.

unpack farray( n, unpack item)

Интерпретирует данные в буфере как XDR-представление последовательности фиксированной длины n. Для распаковки элементов последовательности использует метод (функцию) unpack item, распакованную последовательность возвращает в виде списка.

unpack array( unpack item)

Интерпретирует данные в буфере как XDR-представление последовательности переменной длины. Ожидается, что длина последовательности упакована в виде целого беззнакового числа. Для распаковки элементов последовательности использует метод (функцию) unpack item, распакованную последовательность возвращает в виде списка.

Модуль также определяет иерархию исключений:



Error

Базовый класс для всех исключений модуля. Его экземпляры имеют один публичный атрибут данных msg, содержащий пояснение к ошибке.

ConversionError

Исключения этого класса генерируются методами unpack *() экземпляров класса Unpacker, если данные в буфере с XDR-представлением не соответствуют ожидаемому формату, и методами pack *() класса Packer, если указанное значение не может быть упаковано данным методом.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 [ 121 ] 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145