[prev in list] [next in list] [prev in thread] [next in thread] 

List:       suse-linux
Subject:    Re: ASCII-Textdateien in binaere Textdateien umwandeln
From:       David Haller <david () dhaller ! de>
Date:       2003-01-31 23:49:05
[Download RAW message or body]

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

-- 
4. If you have the right attitude, interesting problems will find you.
          --- Eric S. Raymond, "The Cathedral and the Bazaar"

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    suse-linux-unsubscribe@suse.com
Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken
Sie eine Mail an: suse-linux-help@suse.com

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic