The following code relies on taking the "raw" value of a base 10 int (this gives a hex value), and then using the builtin function rawToChar, which gives a character. You can of course change the range (up to 255). Not sure and haven't tested, but for UTF-8, may need ?Encoding (such as enc2utf8(x))
To use as a function that can accept an ascii character and return the decimal value, something like this:
asc <- function(x) { strtoi(charToRaw(x),16L) }
asc("a")
[1] 97
To use as a function to return the ascii character given it's decimal code value, try something like this:chr <- function(n) { rawToChar(as.raw(n)) }
chr(asc("a")) # 97
[1] "a"
To print the ascii table (for 32:126), try something like this:
coderange = c(32:126)
asciitable_printable = data.frame(
coderange,
as.raw(coderange),
row.names=rawToChar(as.raw(coderange),multiple=TRUE)
)
colnames(asciitable_printable) <- c("dec","hex")
asciitable_printable
Results
dec hex
32 20
! 33 21
" 34 22
# 35 23
$ 36 24
% 37 25
& 38 26
' 39 27
( 40 28
) 41 29
* 42 2a
+ 43 2b
, 44 2c
- 45 2d
. 46 2e
/ 47 2f
0 48 30
1 49 31
2 50 32
3 51 33
4 52 34
5 53 35
6 54 36
7 55 37
8 56 38
9 57 39
: 58 3a
; 59 3b
< 60 3c
= 61 3d
> 62 3e
? 63 3f
@ 64 40
A 65 41
B 66 42
C 67 43
D 68 44
E 69 45
F 70 46
G 71 47
H 72 48
I 73 49
J 74 4a
K 75 4b
L 76 4c
M 77 4d
N 78 4e
O 79 4f
P 80 50
Q 81 51
R 82 52
S 83 53
T 84 54
U 85 55
V 86 56
W 87 57
X 88 58
Y 89 59
Z 90 5a
[ 91 5b
\\ 92 5c
] 93 5d
^ 94 5e
_ 95 5f
` 96 60
a 97 61
b 98 62
c 99 63
d 100 64
e 101 65
f 102 66
g 103 67
h 104 68
i 105 69
j 106 6a
k 107 6b
l 108 6c
m 109 6d
n 110 6e
o 111 6f
p 112 70
q 113 71
r 114 72
s 115 73
t 116 74
u 117 75
v 118 76
w 119 77
x 120 78
y 121 79
z 122 7a
{ 123 7b
| 124 7c
} 125 7d
~ 126 7e