바이너리 파일을 리틀 엔디안에서 빅 엔디안으로 변환하는 oneliner가 있습니까? 반대. 관련이 있다면 RedHat을

그 반대.

관련이 있다면 RedHat을 실행하고 있습니다.



답변

이러한 변환의 경우 이진 컨텐츠의 의미를 알아야하기 때문에이를 수행 할 수 없습니다.

예를 들어 이진 파일 안에 문자열이 있으면 변환해서는 안되며 4 바이트 정수는 2 바이트 정수와 다른 처리가 필요할 수 있습니다.

즉, 바이트 순서 변환의 경우 데이터 유형 설명이 필요합니다.


답변

로 바이트 스왑 할 수 있습니다 dd. 충분합니까? 그렇지 않은 경우 입력 파일 및 예상 출력 파일의 예를 제공하도록 질문을 업데이트하십시오.

echo hello >infile
dd conv=swab <infile >outfile

hex infile
   0000 68 65 6c 6c 6f 0a                                 hello.
hex outfile
   0000 65 68 6c 6c 0a 6f                                 ehll.o

답변

파일 내용에 신경 쓰지 않고 바이트를 바꾸려면 endconv 시도 하십시오 . 표준 바이트 변환 함수를 감싸는 래퍼이므로 2, 4 및 8 바이트 길이의 정수로 변환을 지원합니다. 별도의 프로그램이기 때문에 하나의 라이너가 아닙니다.


답변

워드 (32 비트) 크기를 가정 할 때 파일 엔디 어 니스를 변경하려면이 1 개의 라이너가 적합합니다.

hexdump -v -e '1/4 "%08x"' -e '"\n"' input_file | xxd -r -p > output_file