바이너리 파일을 리틀 엔디안에서 빅 엔디안으로 변환할 수 있는 원라이너가 있습니까?

바이너리 파일을 리틀 엔디안에서 빅 엔디안으로 변환할 수 있는 원라이너가 있습니까?

그 반대.

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

답변1

바이트 교환을 사용할 수 있습니다 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

답변2

이러한 변환을 위해서는 바이너리 내용이 무엇을 의미하는지 알아야 하기 때문에 이렇게 할 수 없습니다.

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

즉, 바이트 순서 변환을 위해서는 데이터 유형 설명이 필요합니다.

답변3

워드(32비트) 크기를 가정하여 파일 바이트 순서를 변경하려면 다음 한 줄을 사용하면 됩니다.

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

답변4

파일 내용에 신경 쓰지 않고 단지 바이트를 교환하고 싶다면 다음을 시도하십시오.변환 종료. 이는 표준 바이트 변환 함수를 둘러싼 래퍼일 뿐이므로 2, 4, 8바이트 길이 정수의 변환을 지원합니다. 하지만 별도의 프로젝트이기 때문에 라이너는 아닙니다.

관련 정보