将八进制基数中的字符串转换为R中的十进制整数

时间:2016-01-08 13:28:11

标签: r decimal octal

我在字符串形式的八进制数中有一个数字(参见下面的例子):

02686a6552f426f08ac0f20ce7dca23e

我需要使用R将其转换为十进制整数。我已经尝试使用googling相关函数,但我只能找到将十进制转换为八进制的函数,例如:

as.octmode()

或者提供fBasics包中十六进制和十进制基数之间的转换:

.hex.to.dec

我希望有一个函数行change.base(string,base_from,base_to),但我只能用以下参数找到strtoi:

strtoi("02686a6552f426f08ac0f20ce7dca23e",base=8)

它给了我一个NA值和文档声明"根据给定的基数使用"将字符串转换为整数,但它没有说明基本参数是否指定了我们做的基数变换或我们变换的变换(我假设后者,因为上面的例子没有提供回扫)

似乎php函数decoct()给出了一个结果:

echo octdec(02686a6552f426f08ac0f20ce7dca23e)
5176

但我真的不知道php。根据我们的开发人员decoct(payment_id)+ 3)* 7是在这种情况下应用于整数的唯一操作。这会推送到Google Analytics中,后者会在示例表单中提供结果。我默认情况下无法在GA上找到任何内容。

如果我只有八进制的数字,那么以数学方式进行转换会很容易,但由于格式看起来像我假设的是原始数字的某种哈希表示,我无能为力。

我需要在数百条类似的记录上运行它来比较两个数据源,因此无法真正使用php沙箱手动执行此操作。

感谢您提供任何帮助或指示

1 个答案:

答案 0 :(得分:1)

可以使用Rmpfr包将十六进制数转换为十进制整数:

library(Rmpfr)
x <- mpfr("02686a6552f426f08ac0f20ce7dca23e", base=16)
#> x
# 1 'mpfr' number of precision  128   bits 
#[1] 3200612827992787429417270296251769406

要将此数字转换为八进制数,可以使用相同的库:

formatMpfr(x,base=8)
#[1] "23206514524572046741053007440634767121076.000"