Python,将原始字节插入字符串

时间:2014-01-10 03:05:41

标签: python string binary serial-port

如果我有变量,则数字= 255

如何将二进制值完全插入字符串中,而不是将其转换为ascii表示形式,如3个字符所示。

string =“我的号码是”+号码!“

所以在这种情况下,在内存中将是字符串,因为它通常是ascii但是变量是它只是一个字节并且是11111111.再次那不是ascii中的11111111(如不是8个字符)。

这样做的目的是我已经通过串口向我的微控制器发送数据,但到目前为止它全部都在ascii中,我发送的任何数字都转换为ascii,因此255将是3个字节,但我试图制作通过发送任何数字作为原始二进制值,一切都更有效率。 (目前我需要发送的数字不会超过255,因此可以在一个字节内完成)

据我所知,如果我沿着这条路走下去,我将需要决定一个转义字符,所以我不小心用原始二进制数据表示命令符号,但这不是问题。

编辑:只是提到我知道我必须将我的字符串编码为ascii,因为python默认是unicode。如果有人提到那个

2 个答案:

答案 0 :(得分:1)

您可能正在寻找chr函数,至少对于Python 2.7:

>>> print "Byte 65:" + chr(65)
Byte 65:A

('A'是“单字节”65的文字表示......)

注意:的 正如您所提到的,Python 3.0中的字符串以unicode表示,即以多字节格式表示。如果您尝试对值进行编码,则会出现错误> 128使用ascii编解码器。

因此,如果通过串行接口发送原始数据,您应该使用bytes,如果您的串行库支持它。

答案 1 :(得分:0)

我会使用struct.pack

可能类似于:

string = "my number is " + struct.pack('B',number)