아래와 같이 데이터를 변환하는 방법을 찾는 데 도움을 주십시오. dd 유틸리티를 사용하여 디스크에서 읽습니다.
dd if=/dev/sdb Skip=8388608 count=560 iflag=skip_bytes,count_bytes |hexdump -C
나는 점점
000001a0 00 00 00 00 cf 4c 79 ce 00 00 00 00 00 00 00 00 |.....리..........|
하지만 나는 다음을 얻고 싶다:
000001a0 ce794ccf00000000 0000000000000000 |.....리..........|
나는 hexdump를 사용할 필요가 없었으며 다른 도구가 트릭을 수행할 것입니다. 감사해요.
답변1
16진수 바이트의 역순은 개별 바이트의 리틀 엔디안 처리로 인해 발생합니다.
hexdump는 64비트 값을 허용하지 않는 것 같지만 od(8진수 덤프)는 허용합니다. hexdump에 대한 호출을 다음으로 바꾸십시오.
od -t x8z
64비트 16진수 긴 단어와 ASCII를 출력합니다. ASCII는 >...<로 묶여 있으므로 쉽게 건너뛸 수 있습니다.
답변2
hexdump
처음에는 구문이 약간 모호해 보이더라도 의 출력은 완전히 사용자 정의할 수 있습니다.
$ seq 10 | hexdump -C
00000000 31 0a 32 0a 33 0a 34 0a 35 0a 36 0a 37 0a 38 0a |1.2.3.4.5.6.7.8.|
00000010 39 0a 31 30 0a |9.10.|
00000015
$ seq 10 | hexdump -e '"%08.8_ax " 2/8 " %016x"' -e '" |" 16 "%_p" "|\n"' -e '"%08.8_Ax\n"'
00000000 0a340a330a320a31 0a380a370a360a35 |1.2.3.4.5.6.7.8.|
00000010 0000000a30310a39 |9.10.|
00000015
이러한 64비트 정수의 엔디안(위의 리틀 엔디안)은 시스템의 컴퓨터 아키텍처/C 컴파일러에 따라 다릅니다.
위의 마지막 숫자에서 누락된 바이트를 충족하기 위해 0 패딩을 확인하세요.
hexdump의 및 를 사용하는 대신 dd
hexdump의 skip
및 을 사용할 수 있습니다.count
-s
-n