For any number represented in base 10, compute the representation in any user-specified base.

base(n, base = 10, num.digits = max(0, floor(log(n, base))) + 1)

Arguments

n

a non-negative integer (base 10).

base

a positive integer greater than 1 indicating what base to represent n in.

num.digits

a positive integer indicating how many digits to use to represent n in base base. By default, num.digits is equal to just the number of required digits (i.e., max(0, floor(log(n, base))) + 1). Setting num.digits to a larger number than this will result in 0's padding the left.

Details

If \(b\) is a positive integer greater than 1, and \(n\) is a positive integer, then \(n\) can be expressed uniquely in the form

$$n = a_kb^k + a_{k-1}b^{k-1} + \ldots + a_1b + a0$$

where \(k\) is a non-negative integer, the coefficients \(a_0, a_1, \ldots, a_k\) are non-negative integers less than \(b\), and \(a_k > 0\) (Rosen, 1988, p.105). The function base computes the coefficients \(a_0, a_1, \ldots, a_k\).

Value

A numeric vector of length num.digits showing the representation of n in base base.

References

Rosen, K.H. (1988). Discrete Mathematics and Its Applications. Random House, New York, pp.105-107.

Author

Steven P. Millard (EnvStats@ProbStatInfo.com)

Note

The function base is included in EnvStats because it is called by the function
oneSamplePermutationTest.

Examples

  # Compute the value of 7 in base 2.

  base(7, 2) 
#> [1] 1 1 1
  #[1] 1 1 1 

  base(7, 2, num.digits=5) 
#> [1] 0 0 1 1 1
  #[1] 0 0 1 1 1