The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Кодировка Base64

Base64 Encoding — кодирование и декодирование данных в формат Base64

Краткое описание


#include <glib.h>


gsize       g_base64_encode_step            (const guchar *in,
                                             gsize len,
                                             gboolean break_lines,
                                             gchar *out,
                                             gint *state,
                                             gint *save);
gsize       g_base64_encode_close           (gboolean break_lines,
                                             gchar *out,
                                             gint *state,
                                             gint *save);
gchar*      g_base64_encode                 (const guchar *data,
                                             gsize len);
gsize       g_base64_decode_step            (const gchar *in,
                                             gsize len,
                                             guchar *out,
                                             gint *state,
                                             guint *save);
guchar*     g_base64_decode                 (const gchar *text,
                                             gsize *out_len);

Описание

Base64 это кодировка которая позволяет кодировать последовательность произвольных байт в последовательность печатных ASCII символов. Для определения Base64, смотрите RFC 1421 или RFC 2045. Base64 в основном используется как кодировка передачи MIME для email.

GLib поддерживает возрастающую кодировку используя g_base64_encode_step() и g_base64_encode_close(). Возрастающее декодирование может быть выполнено с помощью g_base64_decode_step(). Для кодировки или декодирования данных в одном направлении, используйте g_base64_encode() или g_base64_decode().

Поддержка кодировки Base64 была добавлена в GLib 2.12.

Детали

g_base64_encode_step ()

gsize       g_base64_encode_step            (const guchar *in,
                                             gsize len,
                                             gboolean break_lines,
                                             gchar *out,
                                             gint *state,
                                             gint *save);

Возрастающее кодирование двоичных данных в строковое представление Base-64. Вызывая эту функцию многократно вы можете конвертировать данные в части избегая необходимости иметь полностью закодированные данные в памяти.

Когда все данные конвертированы вы должны вызвать g_base64_encode_close() для сброса на диск сохранённого состояния.

Буфер вывода должен быть достаточно большим чтобы вместить все данные которые будут в него записаны. Из=за способа кодирования base64 вам потребуется по крайней мере: len * 4 / 3 + 6 байт. Если вы включили прерывание строк (line-breaking) вам потребуется как минимум: len * 4 / 3 + len * 4 / (3 * 72) + 7 байт.

break_lines обычно используются когда данные закодированные в base64-кодировку помещаются в письма (emails). Это распределяет строки в 72 столбца, вместо помещения всего текста в одну строку, что позволяет избежать проблем с длинными строками в почтовой системе.

in : двоичные данные для кодирования.
len : длина in.
break_lines : прерываются ли длинные строки
out : указатель на буфер назначения
state : Сохраняемое состояние между этапами, начиная с 0
save : Сохраняемое состояние между этапами, начиная с 0
Возвращает : Количество записанных байт вывода

Начиная с версии 2.12


g_base64_encode_close ()

gsize       g_base64_encode_close           (gboolean break_lines,
                                             gchar *out,
                                             gint *state,
                                             gint *save);

Сбрасывает на диск состояние из последовательных вызовов g_base64_encode_step().

break_lines : прерываются ли длинные строки
out : указатель на буфер назначения
state : Сохраняемое состояние из g_base64_encode_step()
save : Сохраняемое состояние из g_base64_encode_step()
Возвращает : Количество записанных байт

Начиная с версии 2.12


g_base64_encode ()

gchar*      g_base64_encode                 (const guchar *data,
                                             gsize len);

Кодирует последовательность двоичных данных в текстовое представление Base-64.

data : двоичные данные для кодирования.
len : длина data.
Возвращает : вновь распределённая, zero-завершённая строка в кодировке Base-64 представляющая данные data.

Начиная с версии 2.12


g_base64_decode_step ()

gsize       g_base64_decode_step            (const gchar *in,
                                             gsize len,
                                             guchar *out,
                                             gint *state,
                                             guint *save);

Возрастающее кодирование последовательности двоичных данных в текстовое представление Base-64. Вызывая эту функцию многократно вы можете конвертировать данные частями избегая необходимость иметь полностью закодированные данные в памяти.

Буфер вывода должен быть достаточно большим чтобы вместить все записываемые в него данные. Так как base64 кодирует 3 байта в 4 символа вам необходимо по крайней мере: len * 3 / 4 bytes.

in : двоичный ввод данных
len : максимальная длина данных in для декодирования
out : буфер вывода
state : Сохраняемое состояние между этапами, начиная с 0
save : Сохраняемое состояние между этапами, начиная с 0
Возвращает : Количество записанных байт вывода

Начиная с версии 2.12


g_base64_decode ()

guchar*     g_base64_decode                 (const gchar *text,
                                             gsize *out_len);

Декодирует последовательность текстовой кодировки Base-64 в двоичные данные

text : zero-завершённая строка с текстом в кодировке base64 для декодирования.
out_len : здесь записывается длина декодированных данных.
Возвращает : вновь распределённый буфер который содержит двоичные данные представленные text

Начиная с версии 2.12




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру