簡體   English   中英

將字符串轉換為十六進制以發送以進行串行通信

[英]Convert string into hex to send for serial communication

我有一個數字為5:240的字符串。 因此,我必須通過十六進制表示形式發送字符串中的數字。 該數字必須在兩個字節的范圍內。 但是,我想在我的串行端口上發送確切的表示形式,例如'\\x00\\x05\\x00\\xf0' 有人可以幫我嗎?

我嘗試了以下代碼片段,但沒有成功:

b='5:240'
b = b.split(':')
for i in range(len(b)):
    print hex(int(b[i]))
    print len(hex(int(b[i])))

結果:

0x5
3
0xf0
4

輸出顯示十六進制轉換,但是由於長度變化,我無法在串行端口上發送它。 誰能解決這個問題?

您可以使用十六進制格式說明符x

def word_hex(w):
    a = int(w / 256)
    b = w % 256
    return "{0:#0{1}x}{2:#0{3}x}".format(a,4,b,4).replace("0x", "\\x")

b='5:240'
b = b.split(':')
for i in b:
    print(word_hex(int(i)))

版畫

\x00\x05
\x00\xf0

答:參考塞爾丘克的答案。 我得到以下解決方案。

def word_hex(w):
    a = int(w / 256)
    b = w % 256
    return "{0:#0{1}x}{2:#0{3}x}".format(a,4,b,4).replace("0x", "")

b='5:240'
b = b.split(':')
for i in b:
    print(word_hex(int(i)).decode("hex"))

暫無
暫無

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

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