📄 gnet-pack.html
字号:
<HTML><HEAD><TITLE>pack</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.77+"><LINKREL="HOME"TITLE="GNet Network Library Reference Manual"HREF="book1.html"><LINKREL="UP"TITLE="GNet Library Reference"HREF="libgnet-reference.html"><LINKREL="PREVIOUS"TITLE="iochannel"HREF="gnet-iochannel.html"><LINKREL="NEXT"TITLE="md5"HREF="gnet-md5.html"></HEAD><BODYCLASS="REFENTRY"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"BGCOLOR="#000000"CELLPADDING="1"CELLSPACING="0"><TR><THCOLSPAN="4"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="5">GNet Network Library Reference Manual</FONT></TH></TR><TR><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="left"><AHREF="gnet-iochannel.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B><<< Previous Page</B></FONT></A></TD><TDWIDTH="25%"BGCOLOR="#0000C0"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="book1.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Home</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#00C000"ALIGN="center"><FONTCOLOR="#FFFFFF"SIZE="3"><B><AHREF="libgnet-reference.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Up</B></FONT></A></B></FONT></TD><TDWIDTH="25%"BGCOLOR="#C00000"ALIGN="right"><AHREF="gnet-md5.html"><FONTCOLOR="#FFFFFF"SIZE="3"><B>Next Page >>></B></FONT></A></TD></TR></TABLE></DIV><H1><ANAME="GNET-PACK"></A>pack</H1><DIVCLASS="REFNAMEDIV"><ANAME="AEN3306"></A><H2>Name</H2>pack -- </DIV><DIVCLASS="REFSYNOPSISDIV"><ANAME="AEN3309"></A><H2>Synopsis</H2><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="SYNOPSIS"> <GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html">gnet_pack</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, const <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> len, ...);<GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html#GNET-PACK-STRDUP">gnet_pack_strdup</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> **buffer, ...);<GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html#GNET-VPACK">gnet_vpack</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, const <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> len, va_list args);<GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html#GNET-CALCSIZE">gnet_calcsize</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, ...);<GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html#GNET-VCALCSIZE">gnet_vcalcsize</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, va_list args);<GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html#GNET-UNPACK">gnet_unpack</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> len, ...);<GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> <AHREF="gnet-pack.html#GNET-VUNPACK">gnet_vunpack</A> (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> len, va_list args);</PRE></TD></TR></TABLE></DIV><DIVCLASS="REFSECT1"><ANAME="AEN3342"></A><H2>Description</H2><P></P></DIV><DIVCLASS="REFSECT1"><ANAME="AEN3345"></A><H2>Details</H2><DIVCLASS="REFSECT2"><ANAME="AEN3347"></A><H3><ANAME="GNET-PACK"></A>gnet_pack ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> gnet_pack (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, const <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> len, ...);</PRE></TD></TR></TABLE><P>The pack format string is a list of types. Each type is represented by a character. Most types can be prefixed by an integer, which represents how many times it is repeated (eg, "4i2b" is equivalent to "iiiibb".</P><P> Native size/order is the default. If the first character of FORMAT is < then little endian order and standard size are used. If the first character is > or !, then big endian (or network) order and standard size are used. Standard sizes are 1 byte for chars, 2 bytes for shorts, and 4 bytes for ints and longs. x is a pad byte. The pad byte is the NULL character.</P><P> b/B are signed/unsigned chars</P><P> h/H are signed/unsigned shorts</P><P> i/I are signed/unsigned ints</P><P> l/L are signed/unsigned longs</P><P> f/D are floats/doubles (always native order/size) v is a void pointer (always native size)</P><P> s is a zero-terminated string. REPEAT is repeat.</P><P> S is a zero-padded string of maximum length REPEAT. We write up-to a NULL character or REPEAT characters, whichever comes first. We then write NULL characters up to a total of REPEAT characters. Special case: If REPEAT is not specified, we write the string as a non-NULL-terminated string (note that it can't be unpacked easily then).</P><P> r is a byte array of NEXT bytes. NEXT is the next argument and is an integer. REPEAT is repeat. (r is from "raw")</P><P> R is a byte array of REPEAT bytes. REPEAT must be specified.</P><P> p is a Pascal string. The string passed is a NULL-termiated string of less than 256 character. The string writen is a non-NULL-terminated string with a byte before the string storing the string length. REPEAT is repeat.</P><P> Mnemonics: (B)yte, s(H)ort, (I)nteger, (F)loat, (D)ouble, (V)oid pointer, (S)tring, (R)aw</P><P> pack was mostly inspired by Python's pack, with some awareness of Perl's pack. We don't do Python 0-repeat-is-alignment. Submit a patch if you really want it.</P><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3371"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>format</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3376"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>buffer</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3381"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>len</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3386"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>...</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3391"><SPANSTYLE="white-space: nowrap"><SPANCLASS="emphasis"><ICLASS="EMPHASIS">Returns</I></SPAN> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P> </P></TD></TR></TBODY></TABLE></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3396"></A><H3><ANAME="GNET-PACK-STRDUP"></A>gnet_pack_strdup ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> gnet_pack_strdup (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> **buffer, ...);</PRE></TD></TR></TABLE><P>Packs the arguments into an allocated buffer. Caller is responsible for deallocating the buffer.</P><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3406"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>format</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3411"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>buffer</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3416"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>...</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3421"><SPANSTYLE="white-space: nowrap"><SPANCLASS="emphasis"><ICLASS="EMPHASIS">Returns</I></SPAN> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P> </P></TD></TR></TBODY></TABLE></DIV><HR><DIVCLASS="REFSECT2"><ANAME="AEN3426"></A><H3><ANAME="GNET-VPACK"></A>gnet_vpack ()</H3><TABLEBORDER="0"BGCOLOR="#D6E8FF"WIDTH="100%"CELLPADDING="6"><TR><TD><PRECLASS="PROGRAMLISTING"><GTKDOCLINKHREF="GINT">gint</GTKDOCLINK> gnet_vpack (const <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *format, <GTKDOCLINKHREF="GCHAR">gchar</GTKDOCLINK> *buffer, const <GTKDOCLINKHREF="GUINT">guint</GTKDOCLINK> len, va_list args);</PRE></TD></TR></TABLE><P>Var arg interface to <AHREF="gnet-pack.html">gnet_pack</A>(). See <AHREF="gnet-pack.html">gnet_pack</A>() for format information.</P><P></P><P></P><TABLECLASS="VARIABLELIST"BORDER="0"CELLSPACING="0"CELLPADDING="4"WIDTH="100%"BGCOLOR="#FFD0D0"><TBODY><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3439"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>format</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3444"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>buffer</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3449"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>len</I></TT> :</SPAN></TD><TDALIGN="LEFT"VALIGN="TOP"WIDTH="80%"><P></P></TD></TR><TR><TDALIGN="RIGHT"VALIGN="TOP"WIDTH="20%"><ANAME="AEN3454"><SPANSTYLE="white-space: nowrap"><TTCLASS="PARAMETER"><I>args</I
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -