Значение заданного количества бит

Функция

Получить значение заданного количества бит.

Спецификация
 
< смещение байта >::=
целое неотрицательное число
< смещение бита >::=
целое неотрицательное число
< количество бит >::=
целое положительное число
Синтаксические правила
  1. < Смещение байта > – целое неотрицательное число, задающее положение того байта в < значимом выражении >, в котором находится начало требуемой битовой последовательности. Смещение начинается с нуля.

  2. < Смещение бита > – целое неотрицательное число, задающее начало битовой последовательности относительно выбранного байта. Смещение начинается с нуля и задается в количестве бит. < Смещение бита > – значение из диапазона 0-7.

  3. < Количество бит > – целое положительное значение в диапазоне от 1 до 32, задающее количество выбираемых бит.

  4. Тип < значимого выражения > не проверяется.

  5. Все аргументы функции могут быть заданы < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    select GETBITS (? (byte(10)), :param (int), ? (smallint), ? (int));
    0145ac77ff
    2
    3
    8
    |        245|

Возвращаемое значение
  1. Значение указанной битовой последовательности. Тип возвращаемого значения – INT.

  2. Если аргумент NULL, возвращается NULL.

  3. Если задано недопустимое смещение, фиксируется исключительная ситуация.

Пример
GETBITS (hex('01450affcd02'), 2, 3, 8)

Результатом будет строка бит: 01010111(см. пояснение ниже).

Исходное значение000000010100010100001010111111111100110100000010
Смещение байта012345
Смещение бита  0123   
Результат000000010100010100001010111111111100110100000010

Столбец $$$S14 первой строки системной таблицы $$$SYSRL содержит структуру, описывающую параметры настройки СУБД. Необходимо узнать версию БД (значение находится в структуре со смещением 65 байт).

select getbits($$$s14,65,0,7) from $$$sysrl where rowid=1;