相信很多人都跟筆者有過類似的困擾, 就是不大會處理從UART中讀取回來的二進制的資料, 以下介紹 如何拆解跟打包可以跟底層溝通的字串 (以WIFI BSSID 為例)
[實作] 使用unpack拆解讀到的WiFi BSSID bytes成原本的MAC Address
import network
nic = network.WLAN(network.STA_IF)
nic.active(True)
nic.scan()
[(b'C56', b'0Z:Q\xb4H', 6', -26, 3, 0), (b'AVL',b'xDv\xf5\x13t', 11, -75, 4, 0)]
import ustruct as struct
(2) unpack 使用方式如右: unpack(fmt,string)
(3) 筆者將使用unsigned char 的方式轉回數據
ustruct.unpack('BBBBBB', b'xDv\xf5\x13t')
>>> (120, 68, 118, 245, 19, 116)
[秘訣] b 一定要記得寫, 不然換錯出來的答案會是錯誤的
6. 轉成16進制後就完成
>>> (hex(120), hex(68), hex(118), hex(245), hex(19), hex(116))
>>> 0x78, 0x44, 0x76, 0xf5, 0x13, 0x74
iw dev wlan0 scan |grep -Ei '^BSS|SSID'
8. 經過交叉比對後, 證實實作結果是正確的