ГОСТ Р ИСО/МЭК 8825-2-2003
10.5.7.2 (Случай одного октета). Если диапазон «range» имеет значение 256, то значение (и — lb) должно быть закодировано в одном октете выровненного по октету битового поля в виде неотрицательного двоичного целого кодирования, как определено в 10.3.
10.5.7.3 (Случай двух октетов). Если диапазон «range» имеет значение большее или равное 257 и меньшее или равное 64К, то значение (и — lb) должно быть закодировано в двух октетах выровненного по октету битового поля в виде неотрицательного двоичного целого кодирования, как определено в 10.3.
10.5.7.4 (Случай неопределенной длины). В противном случае значение (и — lb) должно быть закодировано в неотрицательном двоичном целом виде в выровненном по октету битовом поле с минимальным количеством октетов, как определено в 10.3, а количество занятых под кодирование октетов len используется другими разделами, ссылающимися на данный раздел, для спецификации кодирования длины.
10.6 Кодирование обычно маленького неотрицательного целого числа
Примечание — Эта процедура используется при кодировании неотрицательного целого числа, которое предполагается маленьким, но размер которого потенциально не ограничивается из-за наличия маркера расширения. Примером является индекс выбора.
10.6.1 Если неотрицательное целое число и < 63, то к списку полей должно быть добавлено однобитовое поле с битом, равным 0, а и должно быть закодировано неотрицательным двоичным целым кодированием в 6-битовом поле.
10.6.2 Если и > 64, то к списку полей должно быть добавлено однобитовое поле с битом, равным 1. Затем значение и должно быть закодировано как полуограниченное целое число с lb = 0, и должны быть проведены процедуры 10.9 для его добавления к списку полей с предшествующим детерминантом длины.
10.7 Кодирование полуограниченного целого числа
Примечание — Эта процедура используется, когда может быть идентифицирована нижняя граница, но не верхняя. Процедура кодирования располагает смещение от нижней границы в минимальном количестве октетов в неотрицательном двоичном целом виде и требует явного кодирования длины (обычно один октет), как определено в последующих процедурах.
10.7.1 Данный подраздел специфицирует отображение из полуограниченных целых чисел в выровненное по октету битовое поле, которое используется в последующих разделах настоящего стандарта.
10.7.2 Процедуры настоящего подраздела вызываются, если только полуограниченное целое число (обозначенное и), которое должно быть закодировано, доступно, а значение lb было определено из нотации типа (после применения видимых для PER ограничений).
Примечание — Нижняя граница не может быть определена, если вычисление MIN приводит к бесконечному числу. Например нижняя граница не может быть определена для INTEGER (MIN..MAX).
10.7.3 Процедуры настоящего подраздела всегда приводят к случаю неопределенной длины.
10.7.4 (Случай неопределенной длины). Значение (и — lb) должно быть закодировано как неотрицательное двоичное целое в выровненном по октету поле битов с минимальным количеством октетов, как определено в 10.3, а количество занятых под кодирование октетов len используется в других разделах, которые ссылаются на настоящий подраздел для спецификации кодирования длины.
10.8 Кодирование неограниченного целого числа
П р и м е ч а н и е — Этот случай возникает только при кодировании значения целого типа без нижней границы. Процедура кодирует значение как двоично-дополнительное до 2 целое в минимальном для размещения кода количестве октетов и требует явного кодирования длины (обычно один октет), как определено в последующих процедурах.
10.8.1 Настоящий подраздел специфицирует отображение неограниченного целого числа (обозначенного и) в выровненное по октету поле битов, которое используется в последующих разделах настоящего стандарта.
10.8.2 Процедуры настоящего подраздела всегда приводят к случаю неопределенной длины.
10.8.3 (Случай неопределенной длины.) Значение и должно быть закодировано как двоичнодополнительное до 2 целое в выровненное по октету поле битов с минимальным количеством
13