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


11

各文字のASCII数値をテキストファイルに出力する方法を教えてください。と同様catですが、ASCII値のみを表示しています...(16進数または10進数で問題ありません)。

Apple(改行付き)という単語を含むファイルの出力例は次のようになります。

065 112 112 108 101 013 004

回答:


17

そのための標準コマンドはod、8進ダンプの場合です(オプションを使用すると、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 0458進数で)になります。

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

14

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

すばらしい回答、ありがとうございます。特にhexdump -C。彼の答えも解決し、彼が最初(髪だけ)だったという理由だけでステファンに授与されましたが、どちらも優れています。
Mtl Dev 2016

さらに別のコマンド:python -c "print open('file', 'rb').read().encode('hex')"
jfs 2016年

@JFSebastian Betterecho 'Apple' | python -c "import sys;print sys.stdin.read().encode('hex')"
heemayl 2016年

@heemayl:間違い。Windowsのバイナリファイルが破損する可能性があります
jfs

@heemayl stdinはデフォルトでテキストモードを使用し、改行(os.linesep-> '\n')を翻訳する可能性があります
jfs
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.