Seite 1 von 3
Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:21
von funkheld
Hallo, freunde...
Wie bekommt man das Byte in die Binärdatei?
danke.
gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:28
von Barabbas
Ich vermute jetzt einfach mal, dass du die Funktion chr() suchst - damit erhälst du das entsprechende ASCII-Zeichen. Das kannst du dann in die Datei schreiben.
Besten Gruß,
brb
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:36
von nomnom
Nach der Seite:
http://mail.python.org/pipermail/tutor/ ... 01883.html
Code: Alles auswählen
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = open("test.bin", "wb")
>>> import struct
>>> byte=45
>>> data = struct.pack('i', byte)
>>> f.write(data)
>>> f.close()
>>>
EDIT:
Oh, außerdem, so bekommt man die Daten wieder
Code: Alles auswählen
>>> import struct
>>> f = open('test.bin', 'rb')
>>> intsize = struct.calcsize('i')
>>> data = f.read(intsize)
>>> num = struct.unpack('i', data)
>>> print num
(45,)
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:41
von funkheld
Hallo, schreiben geht jetzt.
Lesen auch, weil keine Fehlermeldung kommt, aber das a wird nicht ausgegeben.
Gruss
Code: Alles auswählen
print "byte schreiben"
f=open("test.bin","wb")
f.write(chr(9))
f.write(chr(10))
f.close
print "byte lesen"
f= open("test.bin","rb")
a=str(f.read(1))
print a
a=str(f.read(1))
print a
f.close
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:47
von nomnom
funkheld hat geschrieben:Hallo, schreiben geht jetzt.
Lesen auch, weil keine Fehlermeldung kommt, aber das a wird nicht ausgegeben.
Gruss
Code: Alles auswählen
print "byte schreiben"
f=open("test.bin","wb")
f.write(chr(9))
f.write(chr(10))
f.close
print "byte lesen"
f= open("test.bin","rb")
a=str(f.read(1))
print a
a=str(f.read(1))
print a
f.close
Wieso magst du denn mit f.read(1) lesen? Und warum schreibst du den Tabulator und das Newline Zeichen in die Datei?
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:51
von funkheld
Wieso magst du denn mit f.read(1) lesen? Und warum schreibst du den Tabulator und das Newline Zeichen in die Datei?
Die test.bin ist laut Windows nur 2byte gross.
Hmmmm..., in der test.bin stehen auch nur 2 byte drin, die 9 und die 10.
Wieso kommst du jetzt auf Tabulator und Newline.?....hm..
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:52
von nomnom
funkheld hat geschrieben:
Wieso magst du denn mit f.read(1) lesen? Und warum schreibst du den Tabulator und das Newline Zeichen in die Datei?
Hmmmm..., in der test.bin stehen nur 2 byte drin, die 9 und die 10.
Wieso kommst du jetzt auf Tabulator und Newline.?....hm..
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:54
von fhoech
Du schliesst die Datei nicht, 'close' ist eine Methode, zum Aufrufen müssen also Klammern dahinter, oder besser gleich das with-Statement verwenden, damit wird die Datei automatisch geschlossen, auch im Fall eines Fehlers.
Zeichencode 9 und 10 (dezimal) sind Tab und Newline respektive, also Whitespace, da kann per 'print' nicht viel angezeigt werden

Vielleicht möchtest Du eher eine String-Repräsentation der Zeichen ausgeben, statt die Zeichen selbst?
Code: Alles auswählen
print "byte schreiben"
with open("test.bin", "wb") as f:
f.write(chr(9))
f.write(chr(10))
print "byte lesen"
with open("test.bin", "rb") as f:
a=str(f.read(1))
print repr(a)
a=str(f.read(1))
print repr(a)
(*edit*: Syntax-Highlighting korrigiert)
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 18:56
von funkheld
Aaaaaach so.
Ne , ich will nur Binärdaten üben, weil ich da von einem Roboter 1Byte-Werte aufnehmen möchte und wiedergeben möchte.
Gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:01
von funkheld
Wie Printet man jetzt die Zahlenwerte?
Gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:02
von nomnom
fhoech hat geschrieben:
Code: Alles auswählen
print "byte schreiben"
with open("test.bin", "wb") as f:
f.write(chr(9))
f.write(chr(10))
print "byte lesen"
with open("test.bin", "rb") as f:
a=str(f.read(1))
print repr(a)
a=str(f.read(1))
print repr(a)
funkheld hat geschrieben:Wie Printet man jetzt die Zahlenwerte?
Gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:05
von funkheld
Es kommen nur diese beiden Zeichen : '\t' '\n' und keine Zahlen.
Gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:06
von fhoech
funkheld hat geschrieben:Wie Printet man jetzt die Zahlenwerte?
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:07
von nomnom
fhoech hat geschrieben:funkheld hat geschrieben:Wie Printet man jetzt die Zahlenwerte?
Hehe, ich sollte mir ne neue Brille kaufen … "Zahlenwerte"

Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:11
von funkheld
Jupp, danke. Jetzt funktioniert es wunderbar..
Jetzt möchte ich 4096 aus einer Datei auslesen in einem ByteArray und dann wieder bestimmter Werte aus dem ByteArray ausgeben. Wie geht das?
Danke.
gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:19
von Hyperion
funkheld hat geschrieben:Jupp, danke. Jetzt funktioniert es wunderbar..
Jetzt möchte ich 4096 aus einer Datei auslesen in einem ByteArray und dann wieder bestimmter Werte aus dem ByteArray ausgeben. Wie geht das?
Nichts für ungut, aber hast Du eigentlich mal im anderen Thread geantwortet? Ist schon wenig motivierend, wenn man sich Mühe gibt, jemandem zu helfen und sieht, dass er nun in einem anderen Thread so aktiv ist.
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 19:39
von BlackJack
@funkheld: 4096 ist ein bisschen zu gross für ein Byte. Also wie steht das denn in der Datei? Zwei Bytes? Little- oder Big-Endian? Und magst Du vielleicht selber mal die Dokumentation zum `struct`-Modul lesen?
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 20:03
von funkheld
Hm....,ich möchte 4096 einzelne Bytes aus der Datei lesen und in einem Array packen.
Gruss
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 20:12
von BlackJack
@funkheld: Du kannst entweder bei `read()` auf der Datei angeben, dass Du 4096 Bytes in eine Zeichenkette lesen willst, Dir das `array`-Modul in der Standardbibliothek anschauen, oder eine externe Bibliothek wie `numpy` installieren. Kommt auch ein bisschen darauf an, was Du mit den Daten machen möchtest.
Re: Wie bekommt man ein byte in die binärdatei?
Verfasst: Dienstag 2. November 2010, 20:39
von funkheld
Wie macht man das reinschauen dort ?
Gruss