簡體   English   中英

在 python 中向二進制字符串添加單個反斜杠

[英]Adding single backslash to binary string in python

我正在通過 RS232 與一台設備通信,它似乎只有在以以下格式發出命令時才能正確解釋命令:

b'\xXX'

例如:

設備_ser.write(b'\xE1')

參數是可變的,因此我在格式化命令之前轉換為十六進制。 我很難想出一種一致的方法來確保只有 1 個反斜杠,同時保留 hex 命令。 我需要整個范圍 - \x00 到 \xFF。

一種方法是使用“unicode escape”:

    setpoint_command_INT = 1

    setpoint_command_HEX = "{0:#0{1}x}".format(setpoint_command_INT,4)
    
    setpoint_command_HEX_partially_formatted = r'\x' + setpoint_command_HEX[2:4]

    setpoint_command_HEX_fully_formatted = setpoint_command_HEX_partially_formatted.encode('utf_8').decode('unicode_escape')

適用於上述示例:

Out[324]: '\x01'

但不適用於代碼過程更改它的大量數字:

setpoint_command_INT = 240

Out[332]: 'ð'

如何格式化此命令,以便我擁有單個反斜杠,同時保留在 0-255 的整個范圍內命令的能力?

謝謝

編輯:

執行此操作的正確方法如下邁克爾所說:

bytes((240,))

感謝您的及時回復。

在您的代碼中,您正在發送一個字節

equipment_ser.write(b'\xE1')

換句話說,您發送的是十進制 225,但作為單個字節。

對於 0-255 范圍內的任何 integer 值,您可以通過以下方式創建其等效字節:

import sys
N = 225 # for example
b = N.to_bytes(1, sys.byteorder)
equipment_ser.write(b)

暫無
暫無

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

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