\function{array_to_bstring} \synopsis{Convert an array to a binary string} \usage{BString_Type array_to_bstring (Array_Type a)} \description The \var{array_to_bstring} function returns the elements of an array \var{a} as a binary string. \seealso{bstring_to_array, init_char_array} \done \function{bstring_to_array} \synopsis{Convert a binary string to an array of characters} \usage{UChar_Type[] bstring_to_array (BString_Type b)} \description The \var{bstring_to_array} function returns an array of unsigned characters whose elements correspond to the characters in the binary string. \seealso{array_to_bstring, init_char_array} \done \function{bstrlen} \synopsis{Get the length of a binary string} \usage{UInt_Type bstrlen (BString_Type s)} \description The \var{bstrlen} function may be used to obtain the length of a binary string. A binary string differs from an ordinary string (a C string) in that a binary string may include null chracters. \example #v+ variable s = "hello\0"; len = bstrlen (s); % ==> len = 6 len = strlen (s); % ==> len = 5 #v- \seealso{strlen, length} \done \function{pack} \synopsis{Pack objects into a binary string} \usage{BString_Type pack (String_Type fmt, ...)} \description The \var{pack} function combines zero or more the objects (represented by the ellipses above) into a binary string acording to the format string \var{fmt}. The format string consists of one or more data-type specification characters, and each may be followed by an optional decimal length specifier. Specifically, the data-types are specified according to the following table: #v+ c char C unsigned char h short H unsigned short i int I unsigned int l long L unsigned long j 16 bit int J 16 unsigned int k 32 bit int K 32 bit unsigned int f float d double F 32 bit float D 64 bit float s character string, null padded S character string, space padded x a null pad character #v- A decimal length specifier may follow the data-type specifier. With the exception of the \var{s} and \var{S} specifiers, the length specifier indicates how many objects of that data type are to be packed or unpacked from the string. When used with the \var{s} or \var{S} specifiers, it indicates the field width to be used. If the length specifier is not present, the length defaults to one. With the exception of \var{c}, \var{C}, \var{s}, \var{S}, and \var{x}, each of these may be prefixed by a character that indicates the byte-order of the object: #v+ > big-endian order (network order) < little-endian order = native byte-order #v- The default is to use native byte order. When unpacking via the \var{unpack} function, if the length specifier is greater than one, then an array of that length will be returned. In addition, trailing whitespace and null character are stripped when unpacking an object given by the \var{S} specifier. \example #v+ a = pack ("cc", 'A', 'B'); % ==> a = "AB"; a = pack ("c2", 'A', 'B'); % ==> a = "AB"; a = pack ("xxcxxc", 'A', 'B'); % ==> a = "\0\0A\0\0B"; a = pack ("h2", 'A', 'B'); % ==> a = "\0A\0B" or "\0B\0A" a = pack (">h2", 'A', 'B'); % ==> a = "\0\xA\0\xB" a = pack ("