📄 arrays_byte.sgml
字号:
<refentry id="glib-Byte-Arrays"><refmeta><refentrytitle>Byte Arrays</refentrytitle><manvolnum>3</manvolnum><refmiscinfo>GLIB Library</refmiscinfo></refmeta><refnamediv><refname>Byte Arrays</refname><refpurpose>arrays of bytes, which grow automatically as elements are added.</refpurpose></refnamediv><refsynopsisdiv><title>Synopsis</title><synopsis>#include <glib.h>struct <link linkend="GByteArray">GByteArray</link>;<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-new">g_byte_array_new</link> (void);<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-sized-new">g_byte_array_sized_new</link> (<link linkend="guint">guint</link> reserved_size);<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-append">g_byte_array_append</link> (<link linkend="GByteArray">GByteArray</link> *array, const <link linkend="guint8">guint8</link> *data, <link linkend="guint">guint</link> len);<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-prepend">g_byte_array_prepend</link> (<link linkend="GByteArray">GByteArray</link> *array, const <link linkend="guint8">guint8</link> *data, <link linkend="guint">guint</link> len);<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-remove-index">g_byte_array_remove_index</link> (<link linkend="GByteArray">GByteArray</link> *array, <link linkend="guint">guint</link> index);<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-remove-index-fast">g_byte_array_remove_index_fast</link> (<link linkend="GByteArray">GByteArray</link> *array, <link linkend="guint">guint</link> index);void <link linkend="g-byte-array-sort">g_byte_array_sort</link> (<link linkend="GByteArray">GByteArray</link> *array, <link linkend="GCompareFunc">GCompareFunc</link> compare_func);void <link linkend="g-byte-array-sort-with-data">g_byte_array_sort_with_data</link> (<link linkend="GByteArray">GByteArray</link> *array, <link linkend="GCompareDataFunc">GCompareDataFunc</link> compare_func, <link linkend="gpointer">gpointer</link> user_data);<link linkend="GByteArray">GByteArray</link>* <link linkend="g-byte-array-set-size">g_byte_array_set_size</link> (<link linkend="GByteArray">GByteArray</link> *array, <link linkend="guint">guint</link> length);<link linkend="guint8">guint8</link>* <link linkend="g-byte-array-free">g_byte_array_free</link> (<link linkend="GByteArray">GByteArray</link> *array, <link linkend="gboolean">gboolean</link> free_segment);</synopsis></refsynopsisdiv><refsect1><title>Description</title><para><link linkend="GByteArray">GByteArray</link> is based on <link linkend="GArray">GArray</link>, to provide arrays of bytes which growautomatically as elements are added.</para><para>To create a new <link linkend="GByteArray">GByteArray</link> use <link linkend="g-byte-array-new">g_byte_array_new</link>().</para><para>To add elements to a <link linkend="GByteArray">GByteArray</link>, use <link linkend="g-byte-array-append">g_byte_array_append</link>(), and<link linkend="g-byte-array-prepend">g_byte_array_prepend</link>().</para><para>To set the size of a <link linkend="GByteArray">GByteArray</link>, use <link linkend="g-byte-array-set-size">g_byte_array_set_size</link>().</para><para>To free a <link linkend="GByteArray">GByteArray</link>, use <link linkend="g-byte-array-free">g_byte_array_free</link>().</para><example><title>Using a <structname>GByteArray</structname>.</title><programlisting> GByteArray *gbarray; gint i; gbarray = g_byte_array_new (<!>); for (i = 0; i < 10000; i++) g_byte_array_append (gbarray, (guint8*) "abcd", 4); for (i = 0; i < 10000; i++) { g_assert (gbarray->data[4*i] == 'a'); g_assert (gbarray->data[4*i+1] == 'b'); g_assert (gbarray->data[4*i+2] == 'c'); g_assert (gbarray->data[4*i+3] == 'd'); } g_byte_array_free (gbarray, TRUE);</programlisting></example></refsect1><refsect1><title>Details</title><refsect2><title><anchor id="GByteArray">struct GByteArray</title><programlisting>struct GByteArray{ guint8 *data; guint len;};</programlisting><para>The <structname>GByteArray</structname> struct allows access to the public fields of a <structname>GByteArray</structname>.</para><informaltable pgwide="1" frame="none" role="struct"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry><link linkend="guint8">guint8</link> *<structfield>data</structfield></entry><entry>a pointer to the element data. The data may be moved as elements areadded to the <link linkend="GByteArray">GByteArray</link>.</entry></row><row><entry><link linkend="guint">guint</link> <structfield>len</structfield></entry><entry>the number of elements in the <link linkend="GByteArray">GByteArray</link>.</entry></row></tbody></tgroup></informaltable></refsect2><refsect2><title><anchor id="g-byte-array-new">g_byte_array_new ()</title><programlisting><link linkend="GByteArray">GByteArray</link>* g_byte_array_new (void);</programlisting><para>Creates a new <link linkend="GByteArray">GByteArray</link>.</para><informaltable pgwide="1" frame="none" role="params"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>the new <link linkend="GByteArray">GByteArray</link>.</entry></row></tbody></tgroup></informaltable></refsect2><refsect2><title><anchor id="g-byte-array-sized-new">g_byte_array_sized_new ()</title><programlisting><link linkend="GByteArray">GByteArray</link>* g_byte_array_sized_new (<link linkend="guint">guint</link> reserved_size);</programlisting><para>Creates a new <link linkend="GByteArray">GByteArray</link> with <parameter>reserved_size</parameter> bytes preallocated. Thisavoids frequent reallocation, if you are going to add many bytes tothe array. Note however that the size of the array is still 0.</para><informaltable pgwide="1" frame="none" role="params"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry align="right"><parameter>reserved_size</parameter> :</entry><entry>number of bytes preallocated.</entry></row><row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>the new <link linkend="GByteArray">GByteArray</link>.</entry></row></tbody></tgroup></informaltable></refsect2><refsect2><title><anchor id="g-byte-array-append">g_byte_array_append ()</title><programlisting><link linkend="GByteArray">GByteArray</link>* g_byte_array_append (<link linkend="GByteArray">GByteArray</link> *array, const <link linkend="guint8">guint8</link> *data, <link linkend="guint">guint</link> len);</programlisting><para>Adds the given bytes to the end of the <link linkend="GByteArray">GByteArray</link>.The array will grow in size automatically if necessary.</para><informaltable pgwide="1" frame="none" role="params"><tgroup cols="2"><colspec colwidth="2*"><colspec colwidth="8*"><tbody><row><entry align="right"><parameter>array</parameter> :</entry><entry>a <link linkend="GByteArray">GByteArray</link>.</entry></row><row><entry align="right"><parameter>data</parameter> :</entry><entry>the byte data to be added.</entry></row><row><entry align="right"><parameter>len</parameter> :</entry><entry>the number of bytes to add.</entry></row><row><entry align="right"><emphasis>Returns</emphasis> :</entry><entry>the <link linkend="GByteArray">GByteArray</link>.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -