You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中将字符串转为十六进制?现有代码报错求助

解决Python字符串转十六进制的错误问题

错误原因

你当前的代码int(value, base=16)是用来将十六进制格式的字符串转换成整数,但"increment(uint256)"是普通文本字符串,不属于合法的十六进制字符(十六进制仅包含0-9、a-f/A-F),因此触发ValueError。

正确的转换方法

要把普通字符串转换成十六进制,需先将字符串编码为字节,再将字节转换为十六进制字符串:

方法1:通用字符串转十六进制

value = "increment(uint256)"
# 将字符串编码为字节(默认UTF-8,也可指定ascii)
byte_data = value.encode('utf-8')
# 将字节转换为十六进制字符串
hex_string = byte_data.hex()
print(hex_string)
# 输出:696e6372656d656e742875696e7432353629

方法2:如果是Solidity函数签名哈希(常见场景)

如果你的需求是生成Solidity函数选择器(前4字节哈希),可以用hashlib计算Keccak-256哈希后取前4字节:

import hashlib

value = "increment(uint256)"
# 计算Keccak-256哈希
keccak_hash = hashlib.sha3_256(value.encode('utf-8')).digest()
# 取前4字节并转十六进制
function_selector = keccak_hash[:4].hex()
print(function_selector)
# 输出:d09de08a

内容的提问来源于stack exchange,提问作者FaizanNehal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:12:31