Python: Konvertierung von HEX-string in bytes
Ich versuche zu machen-byte-frame, die ich sende über UDP. Ich habe Klasse Rahmen die Attribute sync, frameSize, Daten, Prüfsumme etc. Ich bin mit hex-Saiten-Wert-Darstellung. Wie diese:
testFrame = Frame("AA01","0034","44853600","D43F")
Nun, ich brauche zu verketten diese hex-Werte zusammen und konvertieren Sie Sie in byte-array wie dieses?!
def convertToBits(self):
stringMessage = self.sync + self.frameSize + self.data + self.chk
return b16decode(self.stringMessage)
Aber wenn ich drucken konvertierten Wert habe ich nicht bekommen, die gleichen Werte, oder ich weiß nicht, zu Lesen, python-notation korrekt:
This is sync: AA01
This is frame size: 0034
This is data:44853600
This is checksum: D43F
b'\xaa\x01\x004D\x856\x00\xd4?'
So, erstes Wort umgewandelt wird, ok (AA01 -> \xaa\x01) aber (0034 -> \x004D) es ist nicht das gleiche. Ich habe versucht, bytearray.fromhex da kann ich verwenden Sie Leerzeichen zwischen den bytes, aber ich bekam das gleiche Ergebnis. Können Sie mir helfen, senden gleichen hex Worte über UDP?
- Die string-4D \x34\x44 so ist es kein problem, Sie einfach falsch verstanden, die Ausgabe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Python zeigt alle byte darstellen kann eine druckbare ASCII-Zeichen diesen Charakter.
4
ist das gleiche wie\x34
, aber als es sich zum drucken der ASCII-Zeichen in der Darstellung.So
\x004
ist eigentlich die gleiche wie\x00\x34
,D\x856\x00
ist das gleiche wie\x44\x85\x36\x00
, und\xd4?
ist das gleiche wie\xd4\x3f
, weil:Dies ist nur die Darstellung der Byte Wert; der Wert ist ganz korrekt und Sie brauchen nicht, etwas anderes zu tun.
Wenn es hilft, können Sie visualisieren die
bytes
Werte als hex wieder mitbinascii.hexlify()
:und du wirst sehen, dass
4
,D
,6
und?
sind wieder vertreten durch den korrekten hexadezimalen Zeichen.