簡體   English   中英

從 micropython 中的字節碼轉換

[英]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 中沒有byteshex屬性。

以下已在運行 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.

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