通过python套接字模块发送整数



我正试图将带符号整数从python发送到PCB。我想通过python发送数字01,但我的PCB一直将其解释为";12592〃;当我用二进制写时,即:00110000 00110001";

每个字节是48和49-这是0和1的ascii值-所以格式有问题-我只想发送10000000和10000001,这样PCB就能正确地解释

我的代码目前非常简单——我是"发送";函数,并编写socket.send(b'01'(-然而,我在套接字模块中找不到任何其他函数来完成这项工作?有没有办法让它以带符号的int形式发送?

@Laurent H.在上面的评论中说得很对。您希望发送二进制值,而不是数字字符的ascii码的二进制等价物。

bytes([0,1]) == b'x00x01'

这是而不是您发送的内容。

相反,

ord("0") == 48

是为零获取字符的数值。

事实上,你甚至可以直接发送二进制,在这里应用你的标志:

0b10000000, 0b10000001 == (128, 129)
b'x80x81'  # as byte values

如果您发送了b'01',它将发送文本ASCII字节值0x30、0x31。CCD_ 2,其是这些字节的小端二进制解释。

使用struct.pack('<h', n)函数将整数n打包为有符号的16位小端整数。

示例:

>>> import struct
>>> struct.pack('<h', 1)
b'x01x00'
>>> struct.pack('<h', 0x1213)
b'x13x12'

相关内容

  • 没有找到相关文章

最新更新