intToBin有大量的

时间:2012-10-29 20:36:15

标签: r

我正在使用“R.utils”包中的intToBin()函数,并且无法使用它将大十进制数转换为二进制数。

我收到了这个错误:强制引入了NAs。

那里有另外一个可以处理大数字的函数/是否有算法/代码来实现这样的函数?

由于

2 个答案:

答案 0 :(得分:2)

如果你阅读了intToBin的帮助页面,它会明确地说它需要“整数”输入。这些不是数学“整数”,而是计算机语言定义的整数,限制为16位(或类似的东西)。

你需要找到(或写:-()一个将浮点数转换为二进制浮点数的函数,或者如果你很幸运,可能需要Rmpfrgmp个包,做任意精度的“大数”数学,可能有一个浮点到二进制的工具。

当这个帖子发布时,有人会通过张贴现有的功能来揭露我的无知,这是我的运气。

编辑 - 就像包pack

一样

答案 1 :(得分:0)

我需要一个双打和十六进制数之间的转换器。所以我写了那些,可能对别人有帮助

doubleToHex <- function(x) {
  if(x < 16)
    return(sprintf("%X", x))

  remainders <- c()
  while(x > 15) {
    remainders <- append(remainders, x%%16)
    x <- floor(x/16)
  }
  remainders <- paste(sprintf("%X", rev(remainders)), collapse="")
  return(paste(x, remainders, sep=""))
}

hexToDouble <- function(x) {
  x <- strsplit(x,"")[[1]]
  output <- as.double(0)
  for(i in rev(seq_along(x))) {
    output <- output + (as.numeric(as.hexmode(x[i]) * (16**(length(x)-i))))
  }
  return(output)
}

doubleToHex(x = 8356723)
hexToDouble(x = "7F8373")

Hasn尚未经过广泛测试,如果您发现问题,请告诉我。