【问题标题】:Converting strings in octal base into decimal integer in R将八进制字符串转换为R中的十进制整数
【发布时间】:2016-04-13 04:57:17
【问题描述】:

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

02686a6552f426f08ac0f20ce7dca23e

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

as.octmode()

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

.hex.to.dec

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

strtoi("02686a6552f426f08ac0f20ce7dca23e",base=8)

这给了我一个 NA 值和文档说明“根据给定的基数将字符串转换为整数”,但它没有说明 base 参数是指定我们进行转换的基数还是转换成的基数我们转换(我假设后者,因为上面的示例 poste 不提供 retus)

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

echo octdec(02686a6552f426f08ac0f20ce7dca23e)
5176

但是我真的不懂php。根据我们的开发人员 decoct(payment_id) + 3 ) * 7 是在这种情况下应用于整数的唯一操作。这被推送到谷歌分析中,它以示例形式提供结果。默认情况下,我无法在 GA 上找到任何执行此操作的内容。

如果我只有八进制的数字,在数学上进行转换会很容易,但由于格式看起来像我假设的原始数字的某种哈希表示,我一无所知。

我需要在数百条相似的记录上运行它来比较两个数据源,所以不能真正使用 php 沙箱手动进行。

感谢任何帮助或指点

【问题讨论】:

  • 对我来说它看起来更像 md5.. 所以,首先你应该弄清楚这到底是什么。注意php中的decoct将十进制转换为八进制
  • 这不是八进制数,因为它包含大于 7 的数字甚至字母。它具有(巨大的)十六进制数的所有特征。
  • @Julius 我打错了我的意思是 octdect
  • @Rhertel 我已经提到它是某种哈希表示或加密,我知道八进制应该只有 0-7 之间的符号,根据开发人员的说法,推送这个数字的代码是 decoct(payment_id ) + 3 ) * 7 所以它需要是一个八进制数,只能以某种形式进行散列或加密

标签: r decimal octal


【解决方案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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    相关资源
    最近更新 更多