Python: Konvertierung hex string zu int und zurück
Mein python-Skript bekommt und sendet Worte über eine serielle Leitung.
Jedes Wort ist ein signed 24-bit-Wert, erhalten als hex-string.
Das Skript sollte jetzt nehmen diese Zeichenfolgen konvertieren und Sie zu Ganzzahlen, einige Berechnungen durchzuführen, und senden Sie Sie zurück in das gleiche format.
Mein problem ist, wie diese Umwandlung zu tun
Examples
Rx string -> calc int
012345 -> 74565
fedcba -> -74566
calc int -> Tx string
74565 -> 012345
-74566 -> fedcba
Wie kann das getan werden?
Bitte bestätigen Sie: die seriellen Daten ist sechs bytes
Können Sie Ihre Aufgabe Definition auch explizit bestätigt haben, dass jede form von lower-level-serial-line-code-Protokoll ( Daten-bits, stop-bits, Parität, CRC-Fehler, framing -, HDB3-transmission-line-code-Schutz et al)?
richtig.
es ist ein weiterer Teil der software, die behandelt die low-level-Zeug, meinen Teil nur empfängt/setzt das 6 char string
"es ist ein weiterer Teil der software, die behandelt die low-level-Zeug" - das macht sehr viel mehr Sinn. Es schien unwahrscheinlich, dass die hardware-Jungs würde design eine serial line Protokoll wie von Ihnen beschrieben.
'0'
-gepolsterte text im Bereich 0-9a-fA-F
. Es ist keine 3-Byte-Binär-Daten. Ist das richtig?Können Sie Ihre Aufgabe Definition auch explizit bestätigt haben, dass jede form von lower-level-serial-line-code-Protokoll ( Daten-bits, stop-bits, Parität, CRC-Fehler, framing -, HDB3-transmission-line-code-Schutz et al)?
richtig.
es ist ein weiterer Teil der software, die behandelt die low-level-Zeug, meinen Teil nur empfängt/setzt das 6 char string
"es ist ein weiterer Teil der software, die behandelt die low-level-Zeug" - das macht sehr viel mehr Sinn. Es schien unwahrscheinlich, dass die hardware-Jungs würde design eine serial line Protokoll wie von Ihnen beschrieben.
InformationsquelleAutor guo | 2014-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Test-Ergebnisse:
Referenz: Hex-string in signed int in Python 3.2?
InformationsquelleAutor Robᵩ
(Edit: Ein versehen meinerseits. Sehen Rob ' s Antwort für eine ordnungsgemäße Abdeckung der negativen Vorzeichen zahlen)
Wenn Sie wollen einfach nur konvertieren einen hex-string in einen int, z.B.:
Der Rückseite getan werden kann, mit der
hex()
Funktion. Aus der Hilfe Seite:Help on built-in function hex in Modul gelieferten:
Sollte es trivial sein, zu entfernen oder hinzuzufügen, das '0x' wenn es fehlt, in Ihrem data stream.
Hier ist ein Beispiel, um sicherzustellen, Polsterung an 6 chars (die 3 bytes = 24 bits):
Wenn du die Daten in 3-byte-form (24 bit), können Sie
int.to_bytes()
undint.from_bytes()
wie beschrieben in die Python docs. Das ist neu in Python 3.2.InformationsquelleAutor cfi
Dann:
InformationsquelleAutor Darko P.