Bitweises umdrehen einer Datei: 010011->110010

Du suchst ein Programm für einen bestimmten Zweck?
Benutzeravatar
Frosch6669
Beiträge: 163
Registriert: 02.07.2003 23:16:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Hamburg
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Frosch6669 » 24.10.2008 06:07:12

was ist eine "windows cd" ?

Benutzeravatar
Frosch6669
Beiträge: 163
Registriert: 02.07.2003 23:16:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Hamburg
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Frosch6669 » 26.10.2008 16:22:05

vielen dank für die vorschläge, also mit dem ersten prog verstehe ich nicht ganz was es genau macht, aber es läuft (das phyton script).
das zweite ist ne c datei (oder irre ich mich jetzt), hab sie versucht zu kompilieren, aber geht nicht(wie mach ich das?)
die letzten vorschläge sind gut, jedoch kann ich sie selbst nicht umsetzten da ich nur in der theorie programieren kann (schäm :-( )
hat jemand also vieleicht ne voll funktionierende lösung?
gruß
frosch

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Danielx » 26.10.2008 17:10:51

Frosch6669 hat geschrieben:das zweite ist ne c datei (oder irre ich mich jetzt), hab sie versucht zu kompilieren, aber geht nicht(wie mach ich das?)

Code: Alles auswählen

gcc -o Programmdatei Quellcode.c
Frosch6669 hat geschrieben:hat jemand also vieleicht ne voll funktionierende lösung?
Das Python-Programm von yeti funktioniert, ist jedoch ziemlich langsam.
Das C-Programm von Spasswolf funktioniert und ist deutlich schneller, schreibt bisher aber nicht in eine Datei.

Gruß,
Daniel

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Danielx » 27.10.2008 18:32:08

So, ich habe mir das C-Programm von Spasswolf mal genauer angesehen und einen kleinen Fehler gefunden:
In der for-Schleife muss es "i = filesize-1" heißen, da sonst am Anfang der Ausgabe fälschlicherweise zusätzlich 8 Bit geschrieben werden (welche jeweils 1 sind bzw. in der Ausgabe eben ein F) und die Ausgabe 8 Bit zu lang wird.

Ich habe diesen kleinen Fehler beseitigt und die Ausgabe erfolgt jetzt direkt in eine Datei (mit der Endung .mirror).
Außerdem habe ich einige kleine Info-Ausgaben eingebaut und Unterstützung für große Dateien hinzugefügt.

Spasswolf, ich hoffe du hast da nichts dagegen ;-) :
http://nopaste.debianforum.de/13754

edit:
Fehlermeldung korrigiert.

Gruß,
Daniel
Zuletzt geändert von Danielx am 28.10.2008 23:32:49, insgesamt 1-mal geändert.

El-Biero
Beiträge: 313
Registriert: 17.01.2005 19:44:48
Wohnort: Wien-Umgebung

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von El-Biero » 27.10.2008 19:52:11

hy
Deine Freunde sind trac und rev.
Kleines Beispiel falls ich das so richtig verstanden habe.
Ausgabe spiegeln 0001 > 1000
und die Zeilen sollen gestürtzt werden also 1 ist letzte und letzte 1 etc

Habs mal durchgespielt

Code: Alles auswählen

[elbiero@Tuxbox Zahlen]$ cat Zahl1.txt
111111100
100000001
111101111
111101000
011001000
[elbiero@Tuxbox Zahlen]$ cat Zahl1.txt | tac |rev
000100110
000101111
111101111
100000001
001111111
ebenso kannst das in einen Zug auch in eine neue Datei schreiben

Code: Alles auswählen

[elbiero@Tuxbox Zahlen]$ cat Zahl1.txt | tac |rev > NeuZahl.txt
[elbiero@Tuxbox Zahlen]$ cat NeuZahl.txt
000100110
000101111
111101111
100000001
001111111
[elbiero@Tuxbox Zahlen]$
ich hoffe ich hab das so richtig verstanden
Tschau
El-Biero

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Danielx » 27.10.2008 20:18:13

El-Biero hat geschrieben:ich hoffe ich hab das so richtig verstanden
Nein, denn du arbeitest auf Zeichen-Ebene, Frosch6669 hat aber nach einer Lösung auf Bit-Ebene gefragt:
Frosch6669 hat geschrieben:es handelt sich um binärdaten! keine buchstaben kein ascii und keine zeilenweise lesbaren dinge.
Diese Zeichenkette

Code: Alles auswählen

12345
könnte binär z.B. so aussehen, die 0-en und 1-en sind jetzt wirklich Bits und keine Zeichen mehr und die Leerzeichen sind nur zur besseren Lesbarkeit:

Code: Alles auswählen

00110001 00110010 00110011 00110100 00110101
Wenn man die Zeichenkette dann binär spiegelt erhält man:

Code: Alles auswählen

10101100 00101100 11001100 01001100 10001100
Was dann umgewandelt in eine Zeichenkette z.B. so aussehen könnte:

Code: Alles auswählen

¬,ÌL.
Gruß,
Daniel

Benutzeravatar
Frosch6669
Beiträge: 163
Registriert: 02.07.2003 23:16:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Hamburg
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Frosch6669 » 28.10.2008 22:40:43

Hallo,
@ Danielx: super Programm. Es läuft bei mir seit ca 40 minuten und hat ca 5 gb umgedreht. mein intel t9500 ist 72°C warm..und das ist dann energiesparend (@intel) ?...
ich habe es vorher mal an nem song ausprobiert hin und wieder zurück klappt.
El-Biero: danke für die einfache lösung, aber sie ist zu einfach, siehe letzten post..
wenn alles glatt läuft poste ich mal morgen das ergebnis...
grüße an alle
frosch

Benutzeravatar
Frosch6669
Beiträge: 163
Registriert: 02.07.2003 23:16:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Hamburg
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Frosch6669 » 28.10.2008 23:15:10

Ach ja,
weiß zufällig jemand wie ich zwei dateien zusammenklebe? so 0110 + 1001 = 01101001

Benutzeravatar
Frosch6669
Beiträge: 163
Registriert: 02.07.2003 23:16:49
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Hamburg
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Frosch6669 » 28.10.2008 23:17:16

ha riesendatei ist umgedreht, jetzt kann ich endlich schlafen....gn8

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Danielx » 28.10.2008 23:33:21

Frosch6669 hat geschrieben:Es läuft bei mir seit ca 40 minuten und hat ca 5 gb umgedreht. mein intel t9500 ist 72°C warm..und das ist dann energiesparend (@intel) ?...
Das Programm ist nicht wirklich optimiert, außerdem könnte man noch Compiler-Optimierung (z.B. -O3) anwenden.
Frosch6669 hat geschrieben:weiß zufällig jemand wie ich zwei dateien zusammenklebe? so 0110 + 1001 = 01101001

Code: Alles auswählen

cat Datei1 Datei2 > zusammen
Gruß,
Daniel

Benutzeravatar
Kokopelli
Beiträge: 1156
Registriert: 08.01.2007 10:13:24
Lizenz eigener Beiträge: MIT Lizenz

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Kokopelli » 28.10.2008 23:35:51

Danielx hat geschrieben:
Frosch6669 hat geschrieben:weiß zufällig jemand wie ich zwei dateien zusammenklebe? so 0110 + 1001 = 01101001

Code: Alles auswählen

cat Datei1 Datei2 > zusammen
Arbeitet cat denn wirklich bitweise? Ich denke, mit cat haben wir wieder das o.g. Problem, dass es zeichenweise arbeitet.
Beste Grüße, Kokopelli
--------------------------
"One must marvel that Godzilla never died laughing" (William Tsutsui)

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Danielx » 29.10.2008 00:18:54

Kokopelli hat geschrieben:Arbeitet cat denn wirklich bitweise?
Nein.
Kokopelli hat geschrieben:Ich denke, mit cat haben wir wieder das o.g. Problem, dass es zeichenweise arbeitet.
Das ist in diesem Fall logischerweise egal.
Denke einfach mal etwas darüber nach. ;-)

Gruß,
Daniel

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Spasswolf » 29.10.2008 09:41:29

@Frosch6669: Und wie schreibst und liest du nun rückwärts auf eine Cd/DvD?
Zuletzt geändert von Spasswolf am 29.10.2008 09:46:21, insgesamt 1-mal geändert.

rgerhards
Beiträge: 22
Registriert: 22.10.2008 14:41:03
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von rgerhards » 29.10.2008 09:45:52

Ich habe den Thread jetzt auch mit Verwunderung und Interesse gelesen. Bleibt die Frage: geht es um ein reales Problem, oder ist das eine Hausarbeit? Würde mich wirklich interressieren, denn ich kann mir einfach nicht vorstellen, welches reale Problem damit gelöst werden soll...
Rainer
Meine Projekte: rsyslog phplogcon (syslog web viewer)

Benutzeravatar
Kokopelli
Beiträge: 1156
Registriert: 08.01.2007 10:13:24
Lizenz eigener Beiträge: MIT Lizenz

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Kokopelli » 29.10.2008 09:50:14

Danielx hat geschrieben:
Kokopelli hat geschrieben:Arbeitet cat denn wirklich bitweise?
Nein.
Kokopelli hat geschrieben:Ich denke, mit cat haben wir wieder das o.g. Problem, dass es zeichenweise arbeitet.
Das ist in diesem Fall logischerweise egal.
Denke einfach mal etwas darüber nach. ;-)
Du scheinst recht zu haben, aber: Da wir nicht wissen, welche Art von Daten wir vor uns haben, ist es gut möglich, dass die zu konkatenierenden Dateien eine Länge aufweisen, die für Schriftzeichen keinen Sinn ergibt, zB eine Länge, bei der 9 Zeichen und ein Rest herauskommt, der als Zeichen interpretiert keinen Sinn ergibt... An der Stelle müsste man dann prüfen, wie cat damit umgeht. Ignorieren und auslassen wäre schlecht, Fehler ignorieren und unvollständige Sequenz anhängen wäre gut, Sequenz auffüllen wäre ganz schlecht.

Aber der Sinn und Zweck der Aktion würde mich auch mal interessieren.... Das einzig mir bekannte Medium, das "rückwärts", also von aussen nach innen beschrieben und gelesen wird, sind die optischen Medien für den Nintendo Gamecube. Aber irgendwie glaube ich nicht, dass es hier um veraltete Konsolenhardware geht...
Beste Grüße, Kokopelli
--------------------------
"One must marvel that Godzilla never died laughing" (William Tsutsui)

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Spasswolf » 29.10.2008 10:27:22

... ,dass die zu konkatenierenden Dateien eine Länge aufweisen, die für Schriftzeichen keinen Sinn ergibt, zB eine Länge, bei der 9 Zeichen und ein Rest herauskommt, der als Zeichen interpretiert keinen Sinn ergibt...
Wie meinst du das? Das die Datei keine ganzahlige Bytelänge hat? Solche Dateien gibt es nicht.

Benutzeravatar
Kokopelli
Beiträge: 1156
Registriert: 08.01.2007 10:13:24
Lizenz eigener Beiträge: MIT Lizenz

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Kokopelli » 29.10.2008 10:47:08

Spasswolf hat geschrieben:
... ,dass die zu konkatenierenden Dateien eine Länge aufweisen, die für Schriftzeichen keinen Sinn ergibt, zB eine Länge, bei der 9 Zeichen und ein Rest herauskommt, der als Zeichen interpretiert keinen Sinn ergibt...
Wie meinst du das? Das die Datei keine ganzahlige Bytelänge hat? Solche Dateien gibt es nicht.
Normalerweise nicht, aber wir wissen nach wie vor nicht, woher die Daten stammen und ob sie nicht vorher auf abstruse Weise geteilt wurden.
Beste Grüße, Kokopelli
--------------------------
"One must marvel that Godzilla never died laughing" (William Tsutsui)

rgerhards
Beiträge: 22
Registriert: 22.10.2008 14:41:03
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von rgerhards » 29.10.2008 10:50:21

Ich ahne schon, was Du meinst. Aber im Dateisystem gibt es keine halben Bytes. Im Hauptspeicher ja auch nicht. Im Zweifelsfalle stehen da irgendwo padding bits. Die werden dann halt mit invertiert... Aber wie gesagt, ohne zu wissen warum...

Prinzipiell lässt sich natürlich jeder Bitstrom invertieren ("rumdrehen"). Wenn Du ihn dann nochmal invertierst, dann hast Du wieder den Orginalstrom. Ist so ähnlich wie ROT13 auf Buchstabenebene. Aber eine Anwendung (ausser "Kindergarten-Kryptographie") fällt mir eben nicht ein...
Rainer
Meine Projekte: rsyslog phplogcon (syslog web viewer)

Benutzeravatar
cirrussc
Beiträge: 6582
Registriert: 26.04.2007 19:47:06
Lizenz eigener Beiträge: MIT Lizenz

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von cirrussc » 29.10.2008 19:10:02

Spasswolf hat geschrieben:@Frosch6669: Und wie schreibst und liest du nun rückwärts auf eine Cd/DvD?
Das würde mich jetzt auch brennend interessieren.
Gruß cirrussc
--------------------
„Der Mensch steigert zur Zeit die Nutzung dessen, was seiner Willkür unterliegt - und kommt sich sehr klug dabei vor.“ H. Gruhl

yeti

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von yeti » 29.10.2008 19:15:41

cirrussc hat geschrieben:
Spasswolf hat geschrieben:@Frosch6669: Und wie schreibst und liest du nun rückwärts auf eine Cd/DvD?
Das würde mich jetzt auch brennend interessieren.
"brennend" ... :lol: ... wie passend!
Treffer!
Versenkt!

Danielx
Beiträge: 6419
Registriert: 14.08.2003 17:52:23

Re: Bitweises umdrehen einer Datei: 010011->110010

Beitrag von Danielx » 29.10.2008 21:06:05

Kokopelli hat geschrieben:Aber der Sinn und Zweck der Aktion würde mich auch mal interessieren....
Ja, das würde mich auch interessieren, bisher gab es ja noch keine plausible Antwort.
Aber ich wollte schon immer mal eine Datei spiegeln, nur so zum Spaß. :-)

Gruß,
Daniel

Antworten