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] 97To 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_printableResults
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