다음과 같이 줄 바꿈으로 구분된 ASCII로 작성된 긴 정수 목록이 포함된 파일이 있습니다.
-175
2
-19345
345592
-45
2355
등...
이 파일을 동일한 정수를 포함하는 "이진" 파일로 변환하여 실제 4바이트 정수를 작성하고 싶습니다.
이를 달성하기 위해 어떤 명령줄 도구를 사용할 수 있습니까?
답변1
perl -pe '$_=pack"l",$_' < infile > outfile
기본 바이트 순서를 사용합니다. 빅 엔디안의 경우 l>
대신 사용하고, 리틀 엔디안의 경우 대신 사용하십시오.l
l<
자세한 내용은 을 참조하세요 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비트를 사용하십시오.