簡體   English   中英

將int轉換為字節以進行串行通信

[英]Converting an int to bytes for serial communication

我需要通過RS485將修改后版本的Airbus(Modbus的怪異修改版本)十六進制命令發送到串行設備。 我要發送的命令是0x8181521500005315。 我能夠成功將命令以文字形式發送:

b'\x81\x81\x15\x21\x00\x00\x53\x15' 

但我想以某種方式將int變量轉換為相同的格式。

這是我到目前為止的內容:

def advancedWriteR(param):
command = (0x818152*0x10000000000 + param*0x100000000 + genECC('r', param))

msg =command.to_bytes(8, byteorder='big')

ser.write(msg)

奇怪的是,味精變成:

b'\x81\x81R\x15\x00\x00S\x15'

任何幫助是極大的贊賞!

b'\\ x81 \\ x81R \\ x15 \\ x00 \\ x00S \\ x15'正好
B '\\ X81 \\ X81 \\ 52 \\ X15 \\ X00 \\ X00 \\ 53 \\ X15'

您可以將它們取回並使用struct模塊強制使用:

>>> import struct
>>> struct.pack('>Q', 0x8181521500005315)
b'\x81\x81R\x15\x00\x00S\x15'
>>> struct.unpack('>Q', b'\x81\x81R\x15\x00\x00S\x15')
(9331830153036190485,)
>>> '0x{:x}'.format(9331830153036190485)
'0x8181521500005315'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM