2016-10-21 36 views
0

我在我的PC和SPS單元之間使用套接字通信。他們通過使用python bytestring()來查詢字節進行通信。 在PC端,我必須切換數字命令(整數),但它們到字節串並通過套接字發送。 來自8,9,12以及更多的值在SPS側會產生錯誤,因爲UTF-8改變了:8→t→9→n。 如何將這些數據保存爲真正的十六進制格式,而不用編碼UTF?Python,使用Bytearray中的實際字節值

my_b = bytearray() 
my_b.append(8) #fill with Bytevalues 
my_b.append(9) 
my_b.append(10) 
my_b.append(11) 
my_b.append(12) 
my_b.append(13) 
print (my_b) 
>> bytearray(b'\x08\t\n\x0b\x0c\r') 

回答

0

他們沒有被改變。 \t,\n\r僅用於表示9,10和13的字節值的簡單內置值。這些值是ASCII控制字符(特別是製表符,換行符和回車符)。

爲了證明這一點,添加這些行到您的代碼段的末尾:

with open("/tmp/foo", "wb") as f: 
    f.write(my_b) 

然後傾倒/tmp/foo爲十六進制字節:

od -tx1 /tmp/foo 
0000000 08 09 0a 0b 0c 0d 
0000006