簡體   English   中英

Python打包字符串為ascii十六進制值

[英]Python pack string as ascii hex value

我對struct模塊和pack方法有問題(也許是在理解中)。 我需要打包一條消息以與傳感器通信。 該消息的一個值是一個整數的ascii表示(在這種情況下為“ 0”和“ 3”),即48和51。傳感器僅接受十六進制值(在這種情況下為30和33)。 但是當我使用pack('BB',48,51)它返回了'\\ x0003',但是我需要'\\ x30 \\ x33'。 有沒有辦法將這兩個字符轉換為“十六進制二進制”?

'\\x30\\x33''03'相同

>>> import struct
>>> print struct.pack('BB', 48, 51)
03
>>> print '\x30\x33'
03
>>> '\x30\x33' == '03'
True

'\\x30\\x33''03'是同一事物的不同表示。
'\\x30\\x33'由其十六進制值定義, '03'由ASCII字符定義。

最后,它們兩個都是兩個字節的數組,分別為48(0x30)和51(0x33)。

傳感器僅接受十六進制值

傳感器僅接受字節,這取決於您需要對值進行編碼的方式。
您是否需要發送數字3或字符串“ 03”?

如果是數字,則需要發送"\\x03"pack("B", 3)
如果是字符串,則只需要發送"03"

如果不需要使用pack,則可以使用以下內容:

'\\'+hex(48)[1:]

暫無
暫無

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

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