Hallo,
On Fri, 31 Jan 2003, Sven Wahl wrote:
Ich fand den Begriff anfangs auch ziemlich verwirrend. Ich nahm folgendes an:
ASCII-Text: zum Beispiel dieser
"binaerer Text": 1101001101000000001 ...usw.
Ahso. Folgendes sollte machen was du willst.
==== liest nur von der Standardeingabe ==== #!/usr/bin/perl -nw use strict; chomp; my @l=split(""); foreach(@l) { print unpack('B*', pack 'A*', $_), " "; } END { print "\n"; } =====
$ echo 'binärer Text ?' | /tmp/test/ascii2binaerstring.pl 01100010 01101001 01101110 11100100 01110010 01100101 01110010 00100000 01010100 01100101 01111000 01110100 00100000 10100100 $ { echo 'ibase=2;'; echo 'binärer Text ?' | /tmp/test/ascii2binaerstring.pl | sed 's/ /;/g'; } | bc | xargs echo 98 105 110 228 114 101 114 32 84 101 120 116 32 164
Wie man sieht wurde z.B. das ä als 228 (dec) kodiert, Leerzeichen als 32 und der Euro als 164.
Je nachdem ob du zwischen den Bytes ein Leerzeichen willst oder nicht, musst du das ', " "' am Ende des 'print' Befehls aendern bzw. weglassen. Auch das "END" musst du ggfs. ersetzen, je nach dem, wie die Ausgabe aussehen soll. Wenn du nach jeder Zeile der Eingabe ein Zeilenumbruch erfolgen soll, fuege statt dem 'END {}' nur das 'print "\n";' ein...
-dnh