Wednesday, March 9, 2011

Ascii code table in R

A quick method to enumerate the printable ascii characters with their hex & decimal values.

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