0
언팩 기능을 사용하여 바이너리 파일의 내용을 16 진수로 변환합니다. 내가으로 그 일을하고펄 언팩과 개행 문자
은 다음과 같습니다
#! /usr/bin/perl
use strict;
use warnings;
my $input=$ARGV[0];
open(INPUT,'<',$input) || die("Couldn't open the file, $input with error: $!\n");
my $value=<INPUT>;
$value=unpack("H*",$value);
print $value,"\n";
이는 16 진수 문자열로 바이너리 입력 파일의 내용을 인쇄합니다.
그러나 이진 파일의 내용을 구문 분석하는 동안 0xa (개행 문자) 바이트를 발견하면 해당 위치에서 압축 해제 함수가 중지됩니다.
결과로 $ value 변수에 불완전한 결과가 나타납니다.
몇 가지 예 : 바이트 후
65 2E 0D 0D 0A 24 00 00 00 00 00 00 00 BA DC 95 DC FE BD
FE FF FF FF 07 00 00 00 08 00 00 00 09 00 00 00 0A 00 00 00 0B 00 00 00 0C 00
모든 내용은 0xa는이 압축 풀기에 의해 해석되지 않습니다.
그래서 새로운 줄 문자를 만나면 파싱을 중단하지 않도록 전체 이진 파일을 압축 해제하는 방법이 있습니까?
감사합니다.
좋아, 해결책을 직접 찾았습니다. 파일을 읽기 전에 slurp 모드를 활성화해야합니다. 로컬 $/않습니다 :) –
네온 플래시 : 당신은 자신의 답변으로 그것을 추가하고 받아 들일 수 있습니다. – ysth