Method: Array#pack

Defined in:
pack.c

#packObject

Packs the contents of arr into a binary sequence according to the directives in aTemplateString (see the table below) Directives A,'' a,'' and Z'' may be followed by a count, which gives the width of the resulting field. The remaining directives also may take a count, indicating the number of array elements to convert. If the count is an asterisk (<code>*''), all remaining array elements will be converted. Any of the directives <code>sSiIlL</code>'' may be followed by an underscore (<code>_'') to use the underlying platform's native size for the specified type; otherwise, they use a platform-independent size. Spaces are ignored in the template string. See also String#unpack.

a = [ "a", "b", "c" ]
n = [ 65, 66, 67 ]
a.pack("A3A3A3")   #=> "a  b  c  "
a.pack("a3a3a3")   #=> "a\000\000b\000\000c\000\000"
n.pack("ccc")      #=> "ABC"

Directives for pack.

Directive Meaning

 @     |  Moves to absolute position
 A     |  ASCII string (space padded, count is width)
 a     |  ASCII string (null padded, count is width)
 B     |  Bit string (descending bit order)
 b     |  Bit string (ascending bit order)
 C     |  Unsigned char
 c     |  Char
 D, d  |  Double-precision float, native format
 E     |  Double-precision float, little-endian byte order
 e     |  Single-precision float, little-endian byte order
 F, f  |  Single-precision float, native format
 G     |  Double-precision float, network (big-endian) byte order
 g     |  Single-precision float, network (big-endian) byte order
 H     |  Hex string (high nibble first)
 h     |  Hex string (low nibble first)
 I     |  Unsigned integer
 i     |  Integer
 L     |  Unsigned long
 l     |  Long
 M     |  Quoted printable, MIME encoding (see RFC2045)
 m     |  Base64 encoded string
 N     |  Long, network (big-endian) byte order
 n     |  Short, network (big-endian) byte-order
 P     |  Pointer to a structure (fixed-length string)
 p     |  Pointer to a null-terminated string
 Q, q  |  64-bit number
 S     |  Unsigned short
 s     |  Short
 U     |  UTF-8
 u     |  UU-encoded string
 V     |  Long, little-endian byte order
 v     |  Short, little-endian byte order
 w     |  BER-compressed integer\fnm
 X     |  Back up a byte
 x     |  Null byte
 Z     |  Same as ``a'', except that null is added with *


440
441
442
# File 'pack.c', line 440

static VALUE
pack_pack(ary, fmt)
VALUE ary, fmt;