如何用Python实现TypeScript中Buffer.from(hex)+bs58.encode的等效逻辑?
解决TypeScript bs58转Python base58的结果匹配问题
要在Python中复现你给出的TypeScript代码结果,关键是正确将十六进制字符串解码为字节序列,这一步要和TypeScript的Buffer.from(hex_str, 'hex')行为完全对齐。
正确实现代码
首先确保安装了base58库:
pip install base58
然后执行以下代码:
import base58 # 将十六进制字符串解码为bytes,对应TS的Buffer.from(hex_str, 'hex') decoded_tx_hash = bytes.fromhex('34cc2932f90774851410a536e3db2c2e61266a1587fbc15e7e9c79b41631ac74') # 用base58编码并转为字符串 near_burn_tx_hash = base58.b58encode(decoded_tx_hash).decode('utf-8') print(near_burn_tx_hash) # 输出:4Z6m9qjt9BNxTF1SdDw3bzYGXYzMp2gTmwRy5AJxpNps
常见错误原因
你之前尝试的bytearray或直接转字符串为字节的方式是错误的:
- 如果直接用
bytearray('34cc29...', 'utf-8')或b'34cc29...',这是把十六进制字符串的每个字符转成字节,而不是将十六进制值解码为对应的字节序列,导致输入的字节数据和TS端完全不同,最终编码结果自然不匹配。 - 必须使用
bytes.fromhex()方法,它会把每两个十六进制字符解析为一个字节,和TypeScript的Buffer.from(..., 'hex')逻辑一致。
内容的提问来源于stack exchange,提问作者Ferran Marin
相关产品推荐
相关产品推荐

