2014-09-04 4 views
1

작은 프로그램의 16 진수 표현을 포함하는 파일이 있는데 실제로 프로그램 자체로 변환하려고합니다.BASh - 16 진수 값 목록을 이진 파일 (응용 프로그램)으로 변환합니다.

rm outfile; while read h; do echo -n ${h}; echo -ne \\x${h} >> outfile; done < input.txt 
: 나는 다음과 같은 비난은 이진 파일에 파일을 변환 할 수 니펫을 사용하고

8d 
00 
a1 
21 
53 
57 
43 
48 
0e 
00 
bb 

: 예를 들어

, 여기 파일에 저장된 텍스트의 샘플, input.txt입니다

¡!SWCH» 

을 다음 h로 변환 :

VIM 출력 파일 개봉 후 xxd를 통해 전 표현 :

0000000: 8d00 a121 5357 4348 0e00 bb0a   ...!SWCH.... 

이 한 가지를 제외하고, 모든 좋은 : 후행 바이트가있다, 0a, 내 바이너리 출력 파일의 끝에 후행. 이것은 내가 작업하는 모든 프로그램 파일에 대해 발생합니다. 후행 0a은 모든 출력 바이너리 파일에 어떻게 추가됩니까? 그것은 내 입력 파일에 존재하지 않습니다.

감사합니다.

답변

2

는 단순히

xxd outfile > outfile.hex 

처럼 떠들썩한 파티에서 직접 xxd 사용하고 여기에 어떤 0a없는, 볼 수 있습니다.

vim이 xxd 명령에 줄을 보낼 때 0a이 추가됩니다. 내부 변환을 원할 경우

vim -b outfile 

무엇이 outfile을 이진 모드로 여는 지 확인하십시오.