$ echo "hello" | od
0000000 062550 066154 005157
0000006
첫 번째 열이 바이트 오프셋을 나타내는 것으로 알고 있습니다. 그러나 다른 숫자가 어떻게 형성되는지 이해하지 못합니다. 위의 내용 에 따르면 man
"8진수 바이트"여야 합니다. 그러나 이 옵션은 -b
"8진수 바이트 선택"도 해야 하며 다른 내용을 인쇄합니다.
$echo "hello" | od -b
0000000 150 145 154 154 157 012
0000006
편집: 그건 그렇고, 이것은 내가 예상하는 대로 "8진수 바이트"라고 불리는 "hello\n"에 있는 모든 문자의 ASCII 값이 나타날 것으로 예상하는 것입니다.
답변1
od
기본적으로 바이트는 표시되지 않고 단어는 8진수로 표시됩니다. 직관적이지 않을 수도 있지만 잊지 마세요 od
.매우이전 명령 :-) 나는 당신의 것보다 더 간단한 예를 사용하겠습니다:
$ echo -en '\01\02' | od
0000000 001001
0000002
인텔이 사용하기 때문에리틀 엔디안 방식건축학, 바이트는 바이너리 \01\02
로 해석됩니다 00000010 00000001
.
각 8진수는 3비트를 나타내므로 다음과 같이 숫자를 그룹화할 수 있습니다.
(0)(000)(001)(000)(000)(001)
따라서 이 2바이트의 8진수 표현은 다음과 같습니다.
001001
매일 사용하는 경우에는 쓸모가 없습니다. 아마도 과거에는 메모리 덤프를 수동으로 디버깅하는 것이 편리했을 것입니다.
귀하의 hello\n
예는 다음과 같습니다
h = 01101000
e = 01100101
l = 01101100
l = 01101100
o = 01101111
\n= 00001010
이제 8진수는 3비트를 나타내지만 바이트는 8비트이므로 약간 복잡해집니다. 따라서 패딩이 추가됩니다. :-( 결과는 기호적으로 다음과 같습니다.
PehPllP\no
바이트 순서로 인해 각 2바이트 세트가 교체된다는 점을 기억하세요. 이것인2비트 패딩입니다. 8진수 결과는 다음과 같습니다(슬래시를 구분 기호로 사용).
00/01100101/01101000/00/01101100/01101100/00/00001010/01101111
이제 3자리의 8진수 그룹은 다음과 같습니다.
000 110 010 101 101 000 000 110 110 001 101 100 000 000 101 001 101 111
8진수로 변환하면 다음과 같습니다.
062550066154005157
이는 귀하의 결과와 일치합니다.
od
요약하면, 옵션이 없는 것이 쓸모없는 것보다 더 나쁘다는 것을 배웠을 것입니다 . :-)