web-dev-qa-db-ja.com

ファイル内の各文字の(数値)ASCII値を印刷するにはどうすればよいですか?

テキストファイル内の各文字の数値ASCII値を出力するにはどうすればよいですか。catと同様ですが、ASCII値のみを表示します。 。(16進数または10進数で結構です)。

Wordを含むファイルの出力例Apple(改行あり)は次のようになります。

065 112 112 108 101 013 004
11
Mtl Dev

そのための standard コマンドは、8進ダンプの場合はodです(オプションを使用すると、8進から10進または16進に変更できます...):

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

ファイル内のすべてのバイトのバイト値を出力することに注意してください。 ASCIIまたはその他の文字セットとは関係ありません。

ファイルに特定の文字セットのAが含まれていて、ASCIIでAに使用されているバイトであるため、65を表示したい場合は、次のようにする必要があります。

< 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(8進数)。

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

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