Значение заданного количества бит
Функция
Получить значение заданного количества бит.
Спецификация
::=
::=
::=
::=
Синтаксические правила
-
< Смещение байта >
– целое неотрицательное число, задающее положение того байта в< значимом выражении >
, в котором находится начало требуемой битовой последовательности. Смещение начинается с нуля. -
< Смещение бита >
– целое неотрицательное число, задающее начало битовой последовательности относительно выбранного байта. Смещение начинается с нуля и задается в количестве бит.< Смещение бита >
– значение из диапазона 0-7. -
< Количество бит >
– целое положительное значение в диапазоне от 1 до 32, задающее количество выбираемых бит. -
Тип
< значимого выражения >
не проверяется. -
Все аргументы функции могут быть заданы
< SQL-параметром >
, который должен содержать спецификацию типа данных параметра.select GETBITS (? (byte(10)), :param (int), ? (smallint), ? (int)); 0145ac77ff 2 3 8 | 245|
Возвращаемое значение
-
Значение указанной битовой последовательности. Тип возвращаемого значения – INT.
-
Если аргумент NULL, возвращается NULL.
-
Если задано недопустимое смещение, фиксируется исключительная ситуация.
Пример
GETBITS (hex('01450affcd02'), 2, 3, 8)
Результатом будет строка бит: 01010111(см. пояснение ниже).
Исходное значение | 00000001 | 01000101 | 00001010 | 11111111 | 11001101 | 00000010 |
Смещение байта | 0 | 1 | 2 | 3 | 4 | 5 |
Смещение бита | 0123 | |||||
Результат | 00000001 | 01000101 | 00001010 | 11111111 | 11001101 | 00000010 |
Столбец $$$S14
первой строки системной таблицы $$$SYSRL
содержит структуру, описывающую параметры настройки СУБД. Необходимо узнать версию БД (значение находится в структуре со смещением 65 байт).
select getbits($$$s14,65,0,7) from $$$sysrl where rowid=1;