Module: IOStruct::PackFmt

Included in:
IOStruct
Defined in:
lib/iostruct/pack_fmt.rb

Constant Summary collapse

FMTSPEC =
{
  'C' => [1, Integer ], # 8-bit unsigned                 (uint8_t, unsigned char)
  'S' => [2, Integer ], # 16-bit unsigned, native endian (uint16_t)
  'I' => [4, Integer ], # 32-bit unsigned, native endian (uint32_t, unsigned int)
  'L' => [4, Integer ], # 32-bit unsigned, native endian (unsigned long)
  'Q' => [8, Integer ], # 64-bit unsigned, native endian (uint64_t)

  'c' => [1, Integer ], # 8-bit signed                 (int8_t, signed char)
  's' => [2, Integer ], # 16-bit signed, native endian (int16_t)
  'i' => [4, Integer ], # 32-bit signed, native endian (int32_t, int)
  'l' => [4, Integer ], # 32-bit signed, native endian (long)
  'q' => [8, Integer ], # 64-bit signed, native endian (int64_t)

  'n' => [2, Integer ], # 16-bit unsigned, network (big-endian) byte order
  'N' => [4, Integer ], # 32-bit unsigned, network (big-endian) byte order
  'v' => [2, Integer ], # 16-bit unsigned, VAX (little-endian) byte order
  'V' => [4, Integer ], # 32-bit unsigned, VAX (little-endian) byte order

  'A' => [1, String  ], # arbitrary binary string (remove trailing nulls and ASCII spaces)
  'a' => [1, String  ], # arbitrary binary string
  'Z' => [1, String  ], # arbitrary binary string (remove trailing nulls)
  'H' => [1, String  ], # hex string (high nibble first)
  'h' => [1, String  ], # hex string (low nibble first)

  'D' => [8, Float   ], # double-precision, native format
  'd' => [8, Float   ],
  'F' => [4, Float   ], # single-precision, native format
  'f' => [4, Float   ],
  'E' => [8, Float   ], # double-precision, little-endian byte order
  'e' => [4, Float   ], # single-precision, little-endian byte order
  'G' => [8, Float   ], # double-precision, network (big-endian) byte order
  'g' => [4, Float   ], # single-precision, network (big-endian) byte order

  'x' => [1, nil     ], # skip forward one byte
}.freeze