将整数转换为base36

S. *_*ica 8 r base36

strtoi(x,base=36) 将base36编码的字符串转换为整数:

strtoi("zzzz",base=36)
[1] 1679615
Run Code Online (Sandbox Code Playgroud)

有没有一个函数反转这个操作,即,给定一个正整数产生base36等价?基本上,我正在寻找一个itostr()这样的功能

itostr(1679615,base=36)
[1] "zzzz"
Run Code Online (Sandbox Code Playgroud)

(除了36之外我不需要任何基础,但是base参数会很好.)

jus*_*618 6

我相信如果你安装BBmisc包,它有itostr功能可用.

library(BBmisc)
itostr(1679615,base=36)
[1] "zzzz"
Run Code Online (Sandbox Code Playgroud)


Jos*_*ich 5

我不知道任何实现,但算法并不那么困难.这是一个适用于32位有符号整数的方法.

intToBase36 <- function(int) {
  stopifnot(is.integer(int) || int < 0)

  base36 <- c(as.character(0:9),LETTERS)
  result <- character(6)
  i <- 1L
  while (int > 0) {
    result[i] <- base36[int %% 36L + 1L]
    i <- i + 1L
    int <- int %/% 36L
  }
  return(paste(result, sep="", collapse=""))
}
Run Code Online (Sandbox Code Playgroud)

如果需要支持更大的整数,可以使用bit64Rmpfr软件包.