python中的进制,python中的十进制到十六进制

"作者在使用pyserial处理串行设备数据时遇到困惑,询问如何保持X和Y的十六进制表示而非ASCII字符。讨论了将整数帧转换为字符串格式的问题,以及为何12和7能正确转为`x0b`和`x07`,但其他非ASCII值如36变成""$""。寻求正确处理和设备期望的串行数据格式建议。"
摘要由CSDN通过智能技术生成

所以我有点无知(也许?)问题。我第一次在串行设备上写东西。我有一个帧[12,0,0,0,0,0,0,0,0,7,0,X,Y]我需要发送。X和Y是校验和值。我对使用pyserial模块的理解是,我需要将这个框架转换成字符串表示。好吧,没关系,但我不知道东西应该是什么格式。我试过了a = [12, 0, 0, 0, 0, 0, 0, 0, 7, 0, X, Y]

send = "".join(chr(t) for t in a)

但是我的困惑来自这样一个事实:当使用chr时,X和Y会转换成奇怪的字符串(假设它们是ascii表示)。例如,如果X为36,则chr(X)为“$”而不是“\x24”。有没有办法让我得到一个代表'\xnn'值而不是ascii码的字符串?让我困惑的是12和7正确地转换为'\x0b'和'\x07'。我错过什么了吗?在

更新:

所以可能是我不太明白串行写入是如何完成的,或者我的设备对我有什么期望。这是我的C代码的一部分正在工作:

^{pr2}$

Python:frame = [11, 0, 0, 0, 0, 0, 0, 0, 9] + [crc1, crc1]

senddata = "".join(chr(x) for x in frame)

IEC = serial.Serial(port='/dev/ttyS2', baudrate=1200, timeout=0)

IEC.send(senddata)

IEC.read(18) # number of bytes to read doesn't matter, it's always 0

我这样做对吗?很明显,你不能确切地说出来,因为它是设备特定的,我不能给出太多的细节。但这是正确的格式吗串行发送()需要数据?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值