파일에서 각 문자의 (숫자) ASCII 값을 어떻게 인쇄합니까?


11

텍스트 파일에서 각 문자의 숫자 ASCII 값을 인쇄하는 방법 마찬가지로 catASCII 값만 표시합니다 (16 진수 또는 10 진수는 좋습니다).

Apple 이라는 단어 (줄 바꿈)가 포함 된 파일의 출력 예 는 다음과 같습니다.

065 112 112 108 101 013 004

답변:


17

표준 이에 대한 명령입니다 od(옵션, 당신은 진수로 진수 또는 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 - 영국의 것 193 151 151 147 133 37( 301 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

hexdump, od, xxd, 또는 $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. 그의 대답도 해결 되었기 때문에 Stephane에게 수여되었으며, 그는 (머리만으로) 처음 이었지만 둘 다 훌륭합니다.
Mtl Dev

또 다른 명령 :python -c "print open('file', 'rb').read().encode('hex')"
jfs

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

@heemayl : 잘못되었습니다. Windows에서 이진 파일이 손상 될 수 있습니다.
jfs

@heemayl stdin은 기본적으로 텍스트 모드를 사용하여 줄 바꿈 ( os.linesep-> '\n')을 번역 할 수 있습니다.
jfs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.