函数

GLibbase64_encode_step

始于: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 / 3 + 1) * 4 + 4 个字节(如果状态不为零,可能需要 + 4)。如果你启用换行,则至少需要:(len / 3 + 1) * 4 + 4) / 76 + 1 个字节的额外空间。

通常在向电子邮件中放置 base64 编码的数据时使用 break_lines。它会在第 76 列换行,而不是将所有文本放在同一行。这样可以避免电子邮件系统中出现长行问题。但请注意,它使用 LF 字符换行,而不是 CR LF 序列,因此结果不能直接传递给 SMTP 或某些其他协议。

可用始于:2.12

参数

in

类型: guint8 数组

要编码的二进制数据。

数组长度在 len 参数中指定。
数据归函数调用者所有。
len

类型: gsize

in 的长度。

break_lines

类型: gboolean

是否换行较长的行。

out

类型: guint8 数组

指针指向目标缓冲区。

参数由该函数设置。
函数调用者拥有所返回数据的的所有权,并负责释放它。
state

类型: gint*

步骤之间的已保存状态,初始化为 0。

参数由该函数修改。
save

类型: gint*

步骤之间的已保存状态,初始化为 0。

参数由该函数修改。

返回值

类型: gsize

写入的输出字节数。