How do I print the (numerical) ASCII values of each character in a file?
The standard command for that is od
, for octal dump (though with options, you can change from octal to decimal or hexadecimal...):
$ echo Apple | od -An -vtu1
65 112 112 108 101 10
Note that it outputs the byte value of every byte in the file. It has nothing to do with ASCII or any other character set.
If the file contains a A in a given character set, and you would like to see 65, because that's the byte used for A in ASCII, then you would need to do:
< file iconv -f that-charset -t ascii | od -An -vtu1
To first convert that file to ascii and then dump the corresponding byte values. For instance Apple<LF>
in EBCDIC-UK would be 193 151 151 147 133 37
(301 227 227 223 205 045
in octal).
$ printf '\301\227\227\223\205\045' | iconv -f ebcdic-uk -t ascii | od -An -vtu1
65 112 112 108 101 10
hexdump
, od
, xxd
, or $YOUR_FAVORITE_LANGUAGE
can all do that.
% echo Apple | hexdump -C
00000000 41 70 70 6c 65 0a |Apple.|
00000006
% echo Apple | perl -ne 'printf "%vd\n", $_'
65.112.112.108.101.10
% echo Apple | clisp <( echo '(print (mapcar #'\''char-code (coerce (read-line *standard-input*) '\''list)))' )
(65 112 112 108 101)
%