Ah, ich verstehe.
Da wuerde ich aber keine Binaerdarstellung nehmen, sondern Hex, das spart Platz.
Hier mal ein Prograemmchen, dass Binaerdaten in Hexdaten umwandelt oder umgekehrt, je nachdem, unter welchem Name (bin2hex oder hex2bin) man es aufruft:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/perl
# bin2hex - wandle Binaerdatei in Hexadezimaldarstellung um.
# hex2bin - wandle Hexadezimaldarstellung in Binaerdatei um.
#
# Aufruf: bin2hex binaerdatei hexdatei
# oder hex2bin hexdatei binaerdatei
#
#
use strict;
use warnings;
die "Aufruf: $0 infile outfile" unless @ARGV == 2;
my ($infile, $outfile) = @ARGV;
die "Eingabe und Ausgabe muessen verschieden sein" unless $infile ne $outfile;
open (my $in, $infile) or die "kann $infile nicht oeffnen: $!";
open (my $out, '>', $outfile) or die "kann $outfile nicht oeffnen: $!";
if ($0 =~ /bin2hex$/) {
bin2hex($in, $out);
} elsif ($0 =~ /hex2bin$/) {
hex2bin($in, $out);
} else {
die "Das Programm muss bin2hex oder hex2bin heissen!";
}
close $in;
close $out;
##########
sub bin2hex {
my ($from, $to) = @_;
binmode $in;
$/ = \8; # immer 8 Bytes einlesen
while (<$from>) {
print $to unpack("H*", $_), "\n";
}
}
sub hex2bin {
my ($from, $to) = @_;
binmode $out;
while (<$from>) {
chomp; # Zeilenenden abschneiden
print $to pack ("H*", $_);
}
}
Das kannst du sicherlich anpassen.
Edit: Fehlermeldung eingefuegt, wenn das Programm einen falshcen Namen hat. :)\n\n
<!--EDIT|Dubu|1112790688-->