【问题标题】:ASCII Character to Decimal Value in RR中的ASCII字符到十进制值
【发布时间】:2017-05-03 19:41:43
【问题描述】:

给定一个单词,我需要找到该单词中每个字母的十进制值并将其存储在一个数组中。 我使用strtoi 函数来实现这一点。但后来发现下面两个应该给出相同输出的函数给出了不同的结果。谁能解释为什么?
第一次尝试

> strtoi("d",16L)
[1] 13

第二次尝试

> strtoi(charToRaw("d"),16L)
[1] 100

16Lsrtoi 的基础上是什么意思?我对 ASCII 字符的 Dec、Hex、Oct 表示相当陌生。所以请分享一些关于它的信息。

【问题讨论】:

  • 对于大于 10 的基数,字母 a 到 z(或 A 到 Z)用于表示 10 到 35。 - 来自 ?strtoi。而charToRaw("d") 的计算结果为 64,所以在第二个你会做strtoi(64, 16L)。不知道为什么你认为它们会是一样的。

标签: r ascii non-ascii-characters


【解决方案1】:

仅用于说明目的:

library(purrr)
library(tibble)

input_str <- "Alphabet."

charToRaw(input_str) %>%
  map_df(~data_frame(letter=rawToChar(.),
                     hex_value=toString(.),
                     decimal_value=as.numeric(.)))
## # A tibble: 9 × 3
##   letter hex_value decimal_value
##    <chr>     <chr>         <dbl>
## 1      A        41            65
## 2      l        6c           108
## 3      p        70           112
## 4      h        68           104
## 5      a        61            97
## 6      b        62            98
## 7      e        65           101
## 8      t        74           116
## 9      .        2e            46

因为你需要做的一切都可以在基础 R 中完成:

as.numeric(charToRaw(input_str))
## [1]  65 108 112 104  97  98 101 116  46

如果您只需要/想要整数,也可以使用 as.integer()as.numeric()

【讨论】:

    猜你喜欢
    • 2014-10-17
    • 2011-04-14
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多