[英]convert from bytecode in micropython
我在 pi pico 上的 micropython 中使用 uhashlib 對事物進行哈希處理。 這是一個例子:
import sys
import os
import uhashlib
import time
time_now = "blergh"
hash_test = uhashlib.sha256(time_now).digest()
print(time_now)
print(hash_test)
這輸出:
blergh
b'Y|\x84W\xa1\x1d\x86cb~\x0bL\x1e\\\x92\xcd-\x93\x05\xddz\x0e\xe1\x9f\x9a\xc1H6\x93\xd8\x0c8'
...顯然,這不是超級有用。 我已經嘗試了很多東西,但我不知道如何從 micropython 中的字節碼進行轉換。 有人有想法/方法嗎?
使用ubinascii.hexlify
並跳過箍。
ubinascii.hexlify()
返回bytes
。 通過將bytes
解碼為str
,然后將該str
轉換為int
(使用 base16),我們可以將值傳遞給hex()
。 micropython 中沒有bytes
的hex
屬性。
以下已在運行 micropython 1.14 的 Raspberry Pi Pico 上進行了全面測試。 我懷疑早期版本也可以工作,只要它們擁有兩個模塊依賴項。
import ubinascii, uhashlib
hs = uhashlib.sha256(b'blergh')
def hexdigest(sha):
return hex(int(ubinascii.hexlify(sha.digest()).decode(), 16))
hx = hexdigest(hs) #0x597c8457a11d8663627e0b4c1e5c92cd2d9305dd7a0ee19f9ac1483693d80c38
您應該能夠使用.hex()
方法直接將任何字節解碼為十六進制!
>>> b"blerg".hex()
'626c657267'
我沒有uhashlib
,但這適用於股票hashlib
!
>>> hashlib.sha256(b"blergh").digest().hex()
'597c8457a11d8663627e0b4c1e5c92cd2d9305dd7a0ee19f9ac1483693d80c38'
>>> hashlib.sha256(b"blergh").hexdigest()
'597c8457a11d8663627e0b4c1e5c92cd2d9305dd7a0ee19f9ac1483693d80c38'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.