如何打印文件中每个字符的(数字)ASCII 值?

如何打印文件中每个字符的(数字)ASCII 值?

如何打印文本文件中每个字符的 ASCII 数值。与 类似cat,但仅显示 ASCII 值...(十六进制或十进制都可以)。

包含该单词的文件的示例输出苹果(带有换行符)可能看起来像:

065 112 112 108 101 013 004

答案1

标准命令是od,对于八进制转储(尽管使用选项,您可以从八进制更改为十进制或十六进制......):

$ echo Apple | od -An -vtu1
  65 112 112 108 101  10

请注意,它输出文件中每个字节的字节值。它与 ASCII 或任何其他字符集无关。

如果文件包含给定字符集中的 A,并且您希望看到 65,因为这是 ASCII 中用于 A 的字节,那么您需要执行以下操作:

< file iconv -f that-charset -t ascii | od -An -vtu1

首先将该文件转换为 ascii,然后转储相应的字节值。例如,Apple<LF>在 EBCDIC-UK 中将是193 151 151 147 133 37301 227 227 223 205 045八进制)。

$ printf '\301\227\227\223\205\045' | iconv -f ebcdic-uk -t ascii | od -An -vtu1
  65 112 112 108 101  10

答案2

hexdumpodxxd、 或$YOUR_FAVORITE_LANGUAGE都可以做到这一点。

% 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)
% 

相关内容