R: Unpack raw vectors

unpack {pack} | R Documentation

## Unpack raw vectors

### Description

Break a raw vector into chunks according to the values in `template`.

### Usage

      unpack(template, ...)

### Arguments

`template` | A string, see 'Details'
`...` | Raw vector(s) to be unpacked

### Details

Currently supported `template` values are:
'a' - A null padded string (as of R-2.8.0, strings cannot contain embedded nulls)
'A' - A space padded string
'b' - An ascending bit order binary vector, (must be a multiple of 8 long)
'B' - An descending bit order binary vector, (must be a multiple of 8 long)
'C' - An unsigned char (octet) value
'v' - An unsigned short (16-bit) in "VAX" (little-endian) order
'V' - An unsigned long (32-bit) in "VAX" (little-endian) order
'f' - A single-precision float
'd' - A double-precision float
'x' - A null byte
'H' - A raw byte
Values 'a', 'A', and 'H' may be followed by a repeat value. A repeat value of '*' will cause the remainder of the bytes in `values` to be placed in the last element.
'/' allows packing and unpacking of a sequence of values where the packed structure contains a packed item count followed by the packed items themselves.
If there are more `template` values or if the repeat count of a field or a group is larger than what the remainder ... allows, `unpack` returns `NULL`. If ... is longer than what is described by `template`, the rest is ignored.

### Value

A list with an element for each value in `template`.

### Note

When unpacking, 'A' strips trailing whitespace and nulls and 'a' returns data verbatim (but with embedded nulls removed, since strings cannot contain embedded nulls as of R-2.8.0).

### Author(s)

Josh Ulrich

### References

http://perldoc.perl.org/functions/unpack.html

### See Also

`pack`

### Examples

      (x <- pack('A4 C v A8 V', 'pack', 2, 8, 'sequence', 68098))
      (u1 <- unpack('A4 C H*', x))
      (u2 <- unpack('v/A V', u1[[3]]))

[Package pack version 0.1-1 Index]