我使用「R.utils」包中的intToBin()函數,並且無法使用它將大數十進制數轉換爲二進制數。intToBin與大數
我得到這個錯誤:強制引入NA。
是否有另一個功能可以處理大數字/是否有算法/代碼來實現這樣的功能?
感謝
我使用「R.utils」包中的intToBin()函數,並且無法使用它將大數十進制數轉換爲二進制數。intToBin與大數
我得到這個錯誤:強制引入NA。
是否有另一個功能可以處理大數字/是否有算法/代碼來實現這樣的功能?
感謝
如果你讀過幫助頁面intToBin
,它很明確地說,它以「整數」的輸入。這些不是數學上的「整數」,而是計算機語言定義的整數,限於16位(或類似的)。您需要找到(或寫入:-()一個將浮點數轉換爲二進制浮點數的函數,或者如果您幸運的話,可能是Rmpfr
或gmp
程序包,這些程序包會執行任意精度「大數」數學,可能有浮動,以二進制工具
通過這個被貼了,會有人已經暴露通過發佈現有的功能,W /我的運氣我的無知的時間
編輯 - 。如可能的包pack
我需要一個轉換器之間的雙打和十六進制數字。我寫這些,可能是幫助他人
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")
尚未得到廣泛的測試過,讓你檢測出了問題我知道。
作爲[pack](http://cran.r-project.org/web/packages/pack/)的作者,我會很感激任何補丁和/或增強功能。我把這個軟件包寫在另一個軟件包中......另一個軟件包現在已經過時了,但我仍然認爲pack可能對其他軟件有用。 –
@JoshuaUlrich看到我的答案,如果你認爲它是相關的,你可以在你的包裝中使用它。 –