ASCII로 작성된 정수가 포함된 파일을 정수의 이진 파일로 변환합니다.

ASCII로 작성된 정수가 포함된 파일을 정수의 이진 파일로 변환합니다.

다음과 같이 줄 바꿈으로 구분된 ASCII로 작성된 긴 정수 목록이 포함된 파일이 있습니다.

-175
2
-19345
345592
-45
2355

등...

이 파일을 동일한 정수를 포함하는 "이진" 파일로 변환하여 실제 4바이트 정수를 작성하고 싶습니다.

이를 달성하기 위해 어떤 명령줄 도구를 사용할 수 있습니까?

답변1

perl -pe '$_=pack"l",$_' < infile > outfile

기본 바이트 순서를 사용합니다. 빅 엔디안의 경우 l>대신 사용하고, 리틀 엔디안의 경우 대신 사용하십시오.ll<

자세한 내용은 을 참조하세요 perldoc -f pack.

l소문자임을 참고하세요 L(긴 정수1), 숫자 가 아닌 .

$ printf '%s\n' 1234 -2 | perl -pe '$_=pack"l",$_'| od -vtd4
0000000        1234          -2
0000010
$ printf '%s\n' 1234 -2 | perl -pe '$_=pack"l>",$_'| od -vtx1
0000000 00 00 04 d2 ff ff ff fe
0000010

답변2

다른 perl:

$ perl -pe '$_ = pack("i", $_)' file

i부호 있는 정수 값(네이티브 C 컴파일러에 따라 최소 4바이트)을 나타냅니다. l이와 같은 옵션을 사용하십시오@Stéphane Chazelas의 답변항상 32비트를 사용하십시오.

관련 정보