digitsBase {GLDEX} | R Documentation |
Digit/Bit Representation of Integers in any Base
Description
Integer number representations in other Bases.
Formally, for every element N =
x[i]
, compute the (vector
of) “digits” A
of the base
b
representation of the number N
, N = \sum_{k=0}^M A_{M-k} b ^ k
.
Revert such a representation to integers.
Usage
digitsBase(x, base = 2, ndigits = 1 + floor(log(max(x), base)))
Arguments
x |
For For |
base |
integer, at least 2 specifying the base for representation. |
ndigits |
number of bits/digits to use. |
Value
For digitsBase()
, an object, say m
, of class
"basedInt"
which is basically a (ndigits
x n
)
matrix
where m[,i]
corresponds to x[i]
,
n <- length(x)
and attr(m,"base")
is the input
base
.
as.intBase()
and the as.integer
method for
basedInt
objects return an integer
vector.
Note
digits
and digits.v
are now deprecated and will be
removed from the sfsmisc package.
Author(s)
Martin Maechler, Dec 4, 1991 (for S-plus; then called digits.v
).
Examples
digitsBase(0:12, 8) #-- octal representation
## This may be handy for just one number (and default decimal):
digits <- function(n, base = 10) as.vector(digitsBase(n, base = base))
digits(128, base = 8) # 2 0 0
## one way of pretty printing (base <= 10!)
b2ch <- function(db)
noquote(gsub("^0+(.{1,})$"," \1", apply(db, 2, paste, collapse = "")))
b2ch(digitsBase(0:33, 2)) #-> 0 1 10 11 100 101 ... 100001
b2ch(digitsBase(0:33, 4)) #-> 0 1 2 3 10 11 12 13 20 ... 200 201
## Hexadecimal:
i <- c(1:20, 100:106)
M <- digitsBase(i, 16)
hexdig <- c(0:9, LETTERS[1:6])
cM <- hexdig[1 + M]; dim(cM) <- dim(M)
b2ch(cM) #-> 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 ... 6A