簡體   English   中英

Python,將原始字節插入字符串

[英]Python, Inserting raw bytes into a string

如果我有一個變量,數字= 255

如何將其二進制值完全插入到內存中的字符串中,而不是將其轉換為3個字符的ascii表示形式。

string =“我的電話號碼是” +電話號碼“!

因此,在這種情況下,在內存中將是字符串,因為它通常是ascii,但是在變量所在的地方,它將只是一個字節,即11111111。同樣,ascii中也不是11111111(因為不是8個字符)。

這樣做的目的是我一直在通過串行向我的微控制器發送數據,但是到目前為止,所有數據都是ascii,我發送的任何數字都將轉換為ascii,所以255將是3個字節,但是我想盡一切辦法通過發送任何數字作為其原始二進制值來提高效率。 (目前,我需要發送的數字不會大於255,因此可以在一個字節中完成)

我知道如果走這條路線,我將需要確定一個轉義字符,這樣我就不會意外地用原始二進制數據表示一個命令符號,但這不是問題。

編輯:剛才提到,我知道我必須將字符串編碼為ascii,因為python默認情況下是unicode。 如果有人提到

您可能正在尋找chr函數,至少對於Python 2.7:

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

(“ A”是“單字節” 65的“文本表示形式”。)

注意:如前所述,Python 3.0中的字符串以unicode表示,即以多字節格式表示。 如果嘗試使用ascii編解碼器對值> 128進行編碼,則會出現錯誤。

因此,如果您的串行庫支持串行接口發送原始數據,則可能應該使用bytes

我會用struct.pack

大概是這樣的:

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

暫無
暫無

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

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