2014-10-10 31 views
4

如何轉換R中的64位十六進制字符串?如何轉換R中的64位十六進制字符串?

> library(int64) 
> as.int64("7f2d36a2a000") 
[1] NA 
Warning message: 
In as.int64("7f2d36a2a000") : NAs introduced 
> as.int64("0x7f2d36a2a000") 
[1] NA 
Warning message: 
In as.int64("0x7f2d36a2a000") : NAs introduced 
+2

這是從CRAN中刪除的孤兒包。考慮bit64:http://cran.r-project.org/web/packages/bit64/index.html或Rmpfr:http://cran.r-project.org/web/packages/Rmpfr/index.html – 2014-10-10 15:36:41

回答

3

對於一個很大的數字,您需要加載一個支持任意大數字表示的包。 Rmpfr是一個例子:

library(Rmpfr) 

## Check that it works as expected on smaller numbers: 
strtoi("ff", base=16) 
# [1] 255 
mpfr("ff", base=16) 
# 1 'mpfr' number of precision 8 bits 
# [1] 255 
as.integer(mpfr("ff", base=16) 
# [1] 255 

## Then apply it with (more) confidence to larger numbers: 
mpfr("7f2d36a2a000", base=16) 
# 1 'mpfr' number of precision 48 bits 
# [1] 139832166883328 
mpfr("7f2d36a2a0007f2d36a2a0007f2d36a2a0007f2d36a2a000", base=16) 
# 1 'mpfr' number of precision 192 bits 
# [1] 3118361524223520784583964884878580812558070356334996529152 
5

下面是使用bit64的方式。

library(bit64) 
str <- "7f2d36a2a000" 
as.integer64(as.numeric(paste0("0x",str))) 
# integer64 
[1] 139832166883328 
相關問題