在 python 中向二进制字符串添加单个反斜杠

Adding single backslash to binary string in python

我正在通过 RS232 与一台设备通信,它似乎只有在以下列格式发出命令时才能正确解释命令:

b'\xXX'

例如:

equipment_ser.write(b'\xE1')

参数是可变的,所以我在格式化命令之前转换为十六进制。我很难想出一种一致的方法来确保在保留十六进制命令的同时只有 1 个反斜杠。我需要整个范围 - \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 范围内的任何整数值,您可以通过以下方式创建其等效字节:

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