Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:将十六进制字符串转换为字节_Python_String_Udp_Hex_Bytearray - Fatal编程技术网

Python:将十六进制字符串转换为字节

Python:将十六进制字符串转换为字节,python,string,udp,hex,bytearray,Python,String,Udp,Hex,Bytearray,我正在尝试制作字节帧,我将通过UDP发送。我有一个类Frame,它有属性sync,frameSize,data,checksum等。我使用十六进制字符串表示值。像这样: testFrame = Frame("AA01","0034","44853600","D43F") 现在,我需要将这些十六进制值连接在一起,然后像这样将它们转换成字节数组 def convertToBits(self): stringMessage = self.sync + self.frameSize + sel

我正在尝试制作字节帧,我将通过UDP发送。我有一个类Frame,它有属性syncframeSizedatachecksum等。我使用十六进制字符串表示值。像这样:

testFrame = Frame("AA01","0034","44853600","D43F")
现在,我需要将这些十六进制值连接在一起,然后像这样将它们转换成字节数组

def convertToBits(self):
    stringMessage = self.sync + self.frameSize + self.data + self.chk
    return b16decode(self.stringMessage)
但当我打印转换后的值时,我得不到相同的值,或者我不知道如何正确读取python符号:

This is sync: AA01
This is frame size: 0034
This is data:44853600
This is checksum: D43F

b'\xaa\x01\x004D\x856\x00\xd4?'

因此,第一个单词被转换为ok(AA01->\xaa\x01),但(0034->\x004D)不一样。我尝试使用bytearray.fromhex,因为我可以在字节之间使用空格,但得到了相同的结果。您能帮我通过UDP发送相同的十六进制字吗?

Python显示任何可以表示该字符的可打印ASCII字符的字节
4
\x34
相同,但它选择在表示中打印ASCII字符

所以
\x004
实际上与
\x00\x34
相同,
D\x856\x00
\x44\x85\x36\x00
相同,
\xd4?
\xd4\x3f
相同,因为:

>>> b'\x34'
'4'
>>> b'\x44'
'D'
>>> b'\x36'
'6'
>>> b'\x3f'
'?'
这只是字节值的表示形式;该值完全正确,无需执行任何其他操作

如果有帮助,您可以再次使用以下方法将
字节
值可视化为十六进制:


您将看到,
4
D
6
再次由正确的十六进制字符表示。

Python显示任何可以将可打印ASCII字符表示为该字符的字节
4
\x34
相同,但它选择在表示中打印ASCII字符

所以
\x004
实际上与
\x00\x34
相同,
D\x856\x00
\x44\x85\x36\x00
相同,
\xd4?
\xd4\x3f
相同,因为:

>>> b'\x34'
'4'
>>> b'\x44'
'D'
>>> b'\x36'
'6'
>>> b'\x3f'
'?'
这只是字节值的表示形式;该值完全正确,无需执行任何其他操作

如果有帮助,您可以再次使用以下方法将
字节
值可视化为十六进制:


您将看到
4
D
6
再次由正确的十六进制字符表示。

字符串4D是\x34\x44,因此没有问题,您只是误读了输出字符串4D是\x34\x44,因此没有问题,您只是误读了输出