바이트나 단어를 구분하기 위해 공백을 사용하지 않고 5번째 바이트부터 시작하여 이진 파일에서 16바이트를 가져오고 싶습니다.
hexdump
내가 원하는 것을 할 것입니다. 출력을 방해하는 열을 오프셋하면 됩니다.
$ hexdump -s5 -n16 -xe '/1 "%01X"' binfile
od
sed
작업도 잘 작동하며 간격을 없애기 위해 이것을 사용해야 했지만 오프셋 열을 억제하라는 지시를 받을 수도 있습니다 .
$ od -An -tx1 -j5 -N16 | sed 's/ //g' binfile
없이도 작동할 것이라고 확신 sed
하지만 od
16진수 모드에서 엔디안(바이트 교환)과 관련된 많은 문제가 있었기 때문에 보기만큼 쉽지는 않습니다. 예를 들어 -tx1
더 높은 값으로 변경하면 바이트가 바뀌고 원하는 128비트 값이 엉망이 됩니다. -tx1
좋지만 hexdump
아직 공백을 제거하는 방법을 찾지 못한 것 같습니다.하지만바이트 순서는 변경하지 않고 유지합니다.
답변1
이 -x
옵션은 나중에 형식을 지정해도 표시되지 않는 오프셋을 표시하도록 hexdump에 지시합니다. 이 옵션을 제거하십시오 -x
.
$ hexdump -s5 -n16 -e '/1 "%01X"' <<<@abcdefghijklmnopqrstuvwxyz; echo
65666768696A6B6C6D6E6F7071727374
플랫폼의 엔디안 에서 2바이트 값을 읽으려면 -x
(x86 및 ARM과 같은 리틀 엔디안 플랫폼에서 2바이트 교환) .%02X
%01X
1 ARM CPU는 두 엔디안을 모두 지원하지만 거의 모든 Unix 시스템은 이를 리틀 엔디안 모드에서 사용합니다.