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

尝试在Python3中复刻PHP的dechex函数时遇值错误求助

PHP转十六进制逻辑的Python实现及报错修复

报错根源

你碰到的ValueError: invalid literal for int() with base 10: 'init',是因为从HTTP GET请求拿到的ITEM_ID包含非数字内容(比如'init')。Python的int()函数遇到非数字字符串会直接抛出异常,而PHP的intval()会自动将非数字内容转为0,这是两者的核心差异。

对齐PHP逻辑的Python代码

要完全复刻dechex(intval($id))的行为,需要兼顾合法数字字符串转换和非法输入容错,还要去掉Pythonhex()默认的0x前缀:

# 替换为你从GET请求获取ITEM_ID的代码
ITEM_ID = request.GET.get("ITEM_ID", "")

# 模拟PHP intval()的容错逻辑:非数字输入转为0
try:
    file_number = int(ITEM_ID)
except ValueError:
    file_number = 0

# 转换为十六进制并去掉0x前缀,和dechex()输出格式对齐
file_hex = hex(file_number)[2:]
file_new = f"{file_hex}.pdf"

可选优化:固定十六进制长度

如果需要保证十六进制字符串的长度(比如适配原PHP处理8位ID的输出长度),可以用格式化字符串补零:

# 示例:补到8位十六进制,不足左侧补0
file_hex = f"{file_number:08x}"
file_new = f"{file_hex}.pdf"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:36:18