7 while (my $line = <STDIN>) {
10 my (@hex) = $line =~ /(\w{8}): (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8}) (\w{8})/;
11 my $addr = hex(shift @hex);
12 if ($addr != 0 && $addr != $oldaddr + 0x20) {
13 printf(STDERR "gap of %u between 0x%08x and 0x%08x\n%s\n",
14 $addr - $oldaddr, $addr, $oldaddr, $line);
16 foreach my $h (@hex) {
18 # poor mans endian conversion
19 my ($a, $b, $c, $d) = $h =~/(\w\w)(\w\w)(\w\w)(\w\w)/;
20 my $h_reorder = $d . $c . $b . $a;
21 # convert into actual binary number
22 my $tmp = pack('H8', $h_reorder);
23 syswrite(STDOUT, $tmp, 4);
28 printf(STDERR "num lines/num hex: %u/%u\n", $num_line, $num_hex);