Справочное описание GLib | ||||
---|---|---|---|---|
#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.
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
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
gchar* g_base64_encode (const guchar *data,
gsize len);
Кодирует последовательность двоичных данных в текстовое представление Base-64.
data : |
двоичные данные для кодирования. |
len : |
длина data .
|
Возвращает : | вновь распределённая, zero-завершённая строка в кодировке Base-64
представляющая данные data .
|
Начиная с версии 2.12
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
guchar* g_base64_decode (const gchar *text,
gsize *out_len);
Декодирует последовательность текстовой кодировки Base-64 в двоичные данные
text : |
zero-завершённая строка с текстом в кодировке base64 для декодирования. |
out_len : |
здесь записывается длина декодированных данных. |
Возвращает : | вновь распределённый буфер который содержит двоичные данные представленные text
|
Начиная с версии 2.12