Spec-Zone.ru › SQLite

Функция Base85() SQL

1. Обзор

Функция base85() — это функция SQL, реализованная как загружаемое расширение для SQLite. Функция преобразует двоичный BLOB в эквивалентное текстовое кодирование base-85 или преобразует это текстовое кодирование base-85 обратно в BLOB.

Функция base85() не является стандартной частью SQLite. Она должна быть загружена как отдельное расширение. Исходный код base85() находится в файле base85.c в папке ext/misc/ дерева исходных кодов SQLite.

Функция base85() не включена в стандартные сборки библиотеки SQLite, но по умолчанию загружается в CLI. Это типично для CLI, которая загружает различные расширения помимо тех, что доступны в стандартной библиотеке SQLite.

Как и представления base64(), функция base85() может использоваться для форматирования двоичного содержимого для передачи по любому разумному ASCII-каналу без повреждений. Она также хорошо работает в CSV или как литералы в скобках TCL или литералы строк SQL. Она не подходит для непосредственного использования в XML-подобных документах.

2. Кодирование

Использованное кодирование напоминает Ascii85, но было разработано автором (Лэрри Брэсфилдом) до появления Mozilla, Adobe, ZMODEM или других вариантов Ascii85, в период 1984 года на мейнфрейме VAX. Кроме того, это независимая реализация системы base85. Поэтому автор по праву поместил её в общественное достояние.

Цифры Base85 взяты из набора кодов 7-битного USASCII, исключая управляющие символы и пробел ! " ' ( ) { | } ~ Del в порядке кода, представляющие значения цифр от 0 до 84 (в десятичной системе).

Группы из 4 байтов, интерпретируемые как значения с порядком байтов "большая эндианность" (big-endian) 32-разрядные значения, представляются 5-значными числами base85 с порядком цифр от старшего к младшему. Группы из 1-3 байтов представляются 2-4 цифрами, всё ещё с порядком байтов "большая эндианность", но значениями от 8 до 24 бит. (Использование порядка байтов "большая эндианность" обеспечивает наипростейший переход к группам байтов, меньшим 4 байтов. Эти группы байтов также могут быть рассмотрены как числа base-256). Группы из 0 байтов представляются 0 цифрами и наоборот. Символы заполнения не используются; длина закодированной последовательности цифр base85 (также известная как "группа") сопоставляется с длиной декодированных двоичных данных 1:1.

Любой символ, не входящий в набор цифр base85, разделяет группы. Когда base85 передаётся или хранится в контейнерах неопределённого размера, символ новой строки используется для разделения на подпоследовательности не более 80 цифр, чтобы можно было использовать fgets() для их чтения.

3. Особенности

  1. Функция base85() всегда принимает один аргумент, который должен быть TEXT (для преобразования base85 в двоичный) или BLOB (для преобразования двоичного в base85).

  2. Если аргумент функции base85() — BLOB, то возвращаемое значение — TEXT в соответствии с описанным выше кодированием.

  3. Если аргумент функции base85() — TEXT, как описано выше, то возвращаемое значение — BLOB, представляющий двоичные данные, соответствующие этому текстовому представлению base85.

  4. Возникает ошибка, если аргумент функции base85() — не TEXT или BLOB.

4. См. также

  • Встроенная функция SQL hex().

  • Функция расширения base64().

Эта страница была последний раз изменена 2024-09-20 17:36:26 UTC

SQLite is in the Public Domain.
https://sqlite.org/base85.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API