| % File src/library/base/man/raw.Rd |
| % Part of the R package, https://www.R-project.org |
| % Copyright 2004-2016 R Core Team |
| % Distributed under GPL 2 or later |
| |
| \name{raw} |
| \alias{raw} |
| \alias{as.raw} |
| \alias{is.raw} |
| \title{Raw Vectors} |
| \description{ |
| Creates or tests for objects of type \code{"raw"}. |
| } |
| \usage{ |
| raw(length = 0) |
| as.raw(x) |
| is.raw(x) |
| } |
| \arguments{ |
| \item{length}{desired length.} |
| \item{x}{object to be coerced.} |
| } |
| \value{ |
| \code{raw} creates a raw vector of the specified length. |
| Each element of the vector is equal to \code{0}. |
| Raw vectors are used to store fixed-length sequences of bytes. |
| |
| \code{as.raw} attempts to coerce its argument to be of raw |
| type. The (elementwise) answer will be \code{0} unless the |
| coercion succeeds (or if the original value successfully coerces to 0). |
| |
| \code{is.raw} returns true if and only if \code{typeof(x) == "raw"}. |
| } |
| \details{ |
| The raw type is intended to hold raw bytes. It is possible to extract |
| subsequences of bytes, and to replace elements (but only by elements |
| of a raw vector). The relational operators (see \link{Comparison}, |
| using the numerical order of the byte representation) work, as do the |
| logical operators (see \link{Logic}) with a bitwise interpretation. |
| |
| A raw vector is printed with each byte separately represented as a |
| pair of hex digits. If you want to see a character representation |
| (with escape sequences for non-printing characters) use |
| \code{\link{rawToChar}}. |
| |
| Coercion to raw treats the input values as representing small |
| (decimal) integers, so the input is first coerced to integer, and then |
| values which are outside the range \code{[0 \dots 255]} or are |
| \code{NA} are set to \code{0} (the \code{nul} byte). |
| |
| \code{as.raw} and \code{is.raw} are \link{primitive} functions. |
| } |
| \seealso{ |
| \code{\link{charToRaw}}, \code{\link{rawShift}}, etc. |
| |
| \code{\link{&}} for bitwise operations on raw vectors. |
| } |
| \examples{ |
| xx <- raw(2) |
| xx[1] <- as.raw(40) # NB, not just 40. |
| xx[2] <- charToRaw("A") |
| xx ## 28 41 -- raw prints hexadecimals |
| dput(xx) ## as.raw(c(0x28, 0x41)) |
| as.integer(xx) ## 40 65 |
| |
| x <- "A test string" |
| (y <- charToRaw(x)) |
| is.vector(y) # TRUE |
| rawToChar(y) |
| is.raw(x) |
| is.raw(y) |
| stopifnot( charToRaw("\xa3") == as.raw(0xa3) ) |
| |
| isASCII <- function(txt) all(charToRaw(txt) <= as.raw(127)) |
| isASCII(x) # true |
| isASCII("\xa325.63") # false (in Latin-1, this is an amount in UK pounds) |
| } |
| \keyword{classes} |