"R.utils"패키지의 intToBin() 함수를 사용하고 있으며 큰 십진수를 이진수로 변환하는 데 문제가 있습니다.intToBin이 큰 숫자
이 오류가 발생합니다. 강제로 도입 된 NAs입니다.
큰 숫자를 처리 할 수있는 또 다른 기능이 있습니까/그러한 기능을 구현하는 알고리즘/코드가 있습니까?
감사
"R.utils"패키지의 intToBin() 함수를 사용하고 있으며 큰 십진수를 이진수로 변환하는 데 문제가 있습니다.intToBin이 큰 숫자
이 오류가 발생합니다. 강제로 도입 된 NAs입니다.
큰 숫자를 처리 할 수있는 또 다른 기능이 있습니까/그러한 기능을 구현하는 알고리즘/코드가 있습니까?
감사
당신이 intToBin
에 대한 도움말 페이지를 읽는다면, 그것은 아주 명시 적으로 "정수"입력을 소요했다. 이것들은 수학적인 "정수"가 아니라 16 비트로 제한된 컴퓨터 언어 정의 int입니다.
부동 소수점 수를 2 진 부동 소수점으로 변환하는 함수를 찾거나 쓸 필요가 있습니다. 운이 좋다면 임의의 정밀도 "큰 숫자"를 사용하는 Rmpfr
또는 gmp
패키지 일 수 있습니다. 수학은 플로트 - 투 - 바이너리 도구를 가질 수있다
이, 누군가가 w 내 운/기존 기능을 게시하여 나의 무지를 노출 할 것이다 게시됩니다 시간으로
편집 -.. 아마 등을 패키지 pack
복식과 16 진수 사이에 변환기가 필요했습니다. 내가 그 쓴, 당신이 그것으로 문제가 있으면 알려주세요, 또 다른
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/)의 저자로서 어떤 패치 및/또는 개선에 감사드립니다. 그 패키지를 다른 패키지에서 사용하도록 썼습니다 ... 그리고 다른 패키지는 이제 쓸모 없지만 여전히 팩은 다른 사람들에게 유용 할 수 있다고 생각했습니다. –
@ JoshuaUlrich 내 대답을 참조하십시오. 관련성이 있다고 판단되면 패키지에서 사용할 수 있습니다. –