我正在使用“R.utils”包中的intToBin()函数,并且无法使用它将大十进制数转换为二进制数。
我收到了这个错误:强制引入了NAs。
那里有另外一个可以处理大数字的函数/是否有算法/代码来实现这样的函数?
由于
答案 0 :(得分:2)
如果你阅读了intToBin
的帮助页面,它会明确地说它需要“整数”输入。这些不是数学“整数”,而是计算机语言定义的整数,限制为16位(或类似的东西)。
你需要找到(或写:-()一个将浮点数转换为二进制浮点数的函数,或者如果你很幸运,可能需要Rmpfr
或gmp
个包,做任意精度的“大数”数学,可能有一个浮点到二进制的工具。
当这个帖子发布时,有人会通过张贴现有的功能来揭露我的无知,这是我的运气。
编辑 - 就像包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尚未经过广泛测试,如果您发现问题,请告诉我。