4
正在從tcp連接讀取數據。如果我從Wireshark的讀取數據(網絡監控器)我得到02501c41d11ec06a471102但如果我在Python中讀取數據我得到它以字節爲單位:將字節轉換爲字符串
b'\x02P\x1cA\xd1\x1e\xc0jG\x11\x02'
<class 'bytes'>
如何轉換呢? 我嘗試這樣做:
#!/usr/bin/env python
import socket
import binascii
import time
import sys
TCP_IP = '10.20.0.195'
TCP_PORT = 9761
BUFFER_SIZE = 2048
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
while 1:
data = s.recv(1024)
print (data)
data2 = data.decode("utf-8")
typ = type(data)
print (typ)
,但如果在運行此我得到:
b'\x02P\x1cA\xd1\x00\x00\x02\xcb\x11\x00'
Traceback (most recent call last):
File "Z:/programeren/domotica/try again/receive.py", line 18, in <module>
data2 = data.decode("utf-8")
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd1 in position 4: invalid continuation byte
只是要清楚,我想轉
b'\x02P\x1cA\xd1\x00\x00\x02\xcb\x11\x00'
到
02501c41d11ec06a471102
你開始的字節。 '.decode('utf-8')'表示從** UTF-8解碼爲一個Unicode字符串。另外,看起來這兩個字符串都是相同的 - ish,Wireshark一個只是全部格式化爲十六進制,而Python則有'\ x'轉義和可打印字符的混合。 – millimoose