Seite 1 von 1
Problem mit struct
Verfasst: Mittwoch 5. September 2018, 09:46
von GMAch
Hallo,
ich benutze struct um Kommandos in Binärcode um zuwandeln aber irgendwie produziert das Unsinn wenn ich Integres die größer als 5407 sind um zu wandeln.
für
kriege ich noch die korrekten 4 Byte
für
dann plötzlich nur 3 Bytes
und für noch größere Werte immer 3 Bytes mit irgendeinem Sonderzeichen oder Buchstaben z.B.:
Kann mir jemand erklären was da schief läuft?
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 10:11
von __deets__
Du verguckst dich. Du bekommst immer 4 Bytes. Aber das ist ja auch ein String, diese 4-Byte-Sequenz. Und wenn eines deiner Bytes druckbar ist, also zB im ASCII definiert, dann ist zB bei dir das erste Zeichen ein Leerzeichen.
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 10:51
von GMAch
Und wie bekomme ich Python dazu mir die Zahlen korrekt umzuwandeln?
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 11:04
von __deets__
Die SIND korrekt. Das erste Zeichen bei 5408 ist \x20, also hex 20. Und jetzt schauen wir in die ASCII-Tabelle, und bei \x20 ist das Leerzeichen definiert. Und dementsprechend gibt Python das erste Zeichen als ' ' aus. Das ist voellig korrekt. Die Byte-Sequenz ist richtig. Dein Problem ist nur die Darstellung bei einer Ausgabe mit print.
Was willst du denn danach mit diesen Daten machen?
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 11:06
von __deets__
Nur als Nachtrag: die Zahl 1095650881 wird zu ANNA:
So ist das nunmal mit Bytes, die man in einem Terminal ausgibt. Die werden nicht als Hex-Werte dargestellt. Wenn das nicht so waere, dann koennte man ja keine Textausgaben machen.
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 12:56
von GMAch
__deets__ hat geschrieben: Mittwoch 5. September 2018, 11:04Was willst du denn danach mit diesen Daten machen?
Per Binär Protokoll ein USB-Gerät steuern.
Gibt es eine Möglichkeit sich die reinen Hex-Darstellung anzeigen zulassen? Ich würde halt gerne verifizieren können ob die Komandos richtig gebildet werden.
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 14:22
von __blackjack__
@GMAch: `bytes`-Objekte haben eine `hex()`-Methode.
Re: Problem mit struct
Verfasst: Mittwoch 5. September 2018, 15:04
von __deets__
@GMAch: __blackjack__ hat's ja schon erwaehnt. Wichtig aber: das ist NUR fuer die Darstellung! Verschicken musst du den original Bytestring!
Re: Problem mit struct
Verfasst: Mittwoch 12. September 2018, 07:57
von GMAch
Ich hätte noch eine Kurze Frage:
Ich benutze die Binärcodes um ein USB Gerät zu steuern.
Die Antworten die ich vom Gerät bekomme sind ebenfalls binär. Wenn ich sie mir im Terminal Anzeigen lasse haben sie aber immer die Form
statt
kann mit jemand sagen wie ich das Anzeigeformat ändern kann?
Re: Problem mit struct
Verfasst: Mittwoch 12. September 2018, 08:20
von Sirius3
Wie liest Du denn die Daten vom Gerät? Die Funktion scheint ein Array zurückzuliefern. Wenn Du ein Problem hast, mit Arrays zu arbeiten, dann schau mal in der Dokumentation von array, ob Du eine für Dich passende Methode findest.
Re: Problem mit struct
Verfasst: Mittwoch 12. September 2018, 09:01
von GMAch
Zum Lesen benutze ich einfach die .read() methode von pyusb.
Re: Problem mit struct
Verfasst: Mittwoch 12. September 2018, 10:27
von __deets__
Hast du mal in die Python-Dokumentation von array geschaut?
https://docs.python.org/3/library/array.html