Digit/Bit Representation of Integers in any Base
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.
digitsBase(x, base = 2, ndigits = 1 + floor(log(max(x), base)))
x |
For For |
base |
integer, at least 2 specifying the base for representation. |
ndigits |
number of bits/digits to use. |
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.
digits
and digits.v
are now deprecated and will be
removed from the sfsmisc package.
Martin Maechler, Dec 4, 1991 (for S-plus; then called digits.v
).
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
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.