Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Ach *das* meinst Du mit binär. Das musst Du selber programmieren.
Das 'b' macht unter Linux zwar keinen Unterschied, aber man sollte es trotzdem benutzen. Es funktioniert dann auch unter anderen Betriebssystemen und dient auch der Dokumentation. Wert das liest, weiss gleich das es sich nicht um eine Textdatei handelt.
Sr4l hat geschrieben:Danke die modis rb wb kenn ich aber wenn ich den outout printe wird es icht als 0 und 1 dargestellt. versucht es in allen möglichen sonderzeichen.
Darf ich mal fragen zu welchem Zweck Du das unbedingt als 0 und 1 ausgegeben haben mußt ? Ist mir gerade nicht wirklich ersichtlich.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def hex2bin(hexstr):
#Hex-String in Int umwandeln
i = int("0x" + hexstr, 0)
#Leere List für die 1 und 0
b = []
#Immer die Zahl von die dann ausgegangen wird am anfang i
n = i
#Endlosschleife
while True:
#Modulo am Anfang einfügen
b.insert(0, str(n % 2))
#Neuen n errechnen
n /= 2
#Wenn n 0 ist abbrechen
if n == 0:
break
#List als String zurückgeben
return "".join(b)
#Logisch oder?
f = open("l.tif","r")
print hex2bin(f.read().encode("hex"))
Den Zwischenschritt mit der Hex-Kodierung solltest Du weglassen und die Bytes einzeln umwandeln. Und am besten mit `list.append()` arbeiten und das (Zwischen)-Ergebnis dann umdrehen. Das sollte schneller sein, als vorne in eine Liste einzufügen.
def byte2base2(byte):
result = list()
for dummy in xrange(8):
result.append(str(byte & 1))
byte >>= 1
return ''.join(reversed(result))
def main():
data = '\0\xff\x55\xaa'
print ' '.join(byte2base2(ord(c)) for c in data)
Ich dachte halt nur das es soetwas schon irgend wo include gibt
Der Sinn ist folgender, ich möchte Binärdatein für mich als Menschen lessbar machen und analysieren. Ich erzeuge eine Datei und mache sich wiederholende Muster, dann lese ich die Datei ein und versuche diese Muster wieder zu finden. Dadurch erhoffe ich mir die Art der Speicherung zuverstehen und die Daten auf Datei Ebene zu manipulieren ohne das Programm welches die Datein erzeugt zu nutzen.
Vll wird sich HEX dabei als besser als Binär erweisen, aber ich wollte halt beide Varianten ausprobieren.
Für so etwas gibt's eigentlich Hex-Editoren. Da hast Du in der Regel die Möglichkeit zwischen verschiedenen Darstellungen umzuschalten oder das Byte (und die folgenden) gleichzeitig als Byte, Word, Long, Float, Double etc. angezeigt zu bekommen.
Wenn es auf's Tempo ankommt, kann man die 256 möglichen unterschiedlichen Binärstrings eines Bytes einmal in einer Liste speichern. Dann braucht man zum Umwandeln jedes Bytes dieses dann nur noch als Index für die Liste verwenden.
MfG
HWK