Search code examples
rtype-conversionint64

How do I convert 64-bit hexadecimal strings in R?


How do I convert 64-bit hexadecimal strings in R?

> 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

Solution

  • For a number that large, you'll need to load a package that supports representations of arbitrarily large numbers. Rmpfr is one example:

    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