Ich muss eine Textdatei byte-shift. Ich weiß absolut nichts über Perl, aber ich fand ein perfekt funktionierendes Stück Code in Perl namens moz-byteshift.pl (documentation). Das macht genau das, was ich machen möchte, aber ich muss es in C# machen.Hilfe mit Byteverschiebung
Hier ist der Quellcode der Perl-Datei:
#!/usr/bin/perl
# To perform a byteshift of 7
# To decode: moz-byteshift.pl -s -7 <infile >outfile
# To encode: moz-byteshift.pl -s 7 <infile >outfile
# To perform a byteshift of 13
# To decode: moz-byteshift.pl -s -13 <infile >outfile
# To encode: moz-byteshift.pl -s 13 <infile >outfile
use encoding 'latin1';
use strict;
use Getopt::Std;
use vars qw/$opt_s/;
getopts("s:");
if(!defined $opt_s) {
die "Missing shift\n";
}
my $buffer;
while(1) {
binmode(STDIN, ":raw");
my $n=sysread STDIN, $buffer, 1;
if($n == 0) {
last;
}
my $byte = unpack("c", $buffer);
$byte += 512 + $opt_s;
$buffer = pack("c", $byte);
binmode(STDOUT, ":raw");
syswrite STDOUT, $buffer, 1;
}
Wenn jemand zumindest könnte erklären, wie der Perl-Skript funktioniert, das wäre toll. Beispielcode des Äquivalents in C# wäre besser. =)
Danke für die Hilfe.
Ich verstehe es nicht. Wenn Sie, wie Sie in einem Kommentar sagen, nicht wirklich wissen, was das Perl-Skript tut, woher wissen Sie, dass es das ist, was Sie tun wollen? – ysth
Dieses Skript wird von einem Mitarbeiter verwendet, um eine Funktion auszuführen, die ich jetzt implementieren muss. So geht das. –