gpt4 book ai didi

python - 下面的代码片段是如何工作的?

转载 作者:太空宇宙 更新时间:2023-11-04 10:44:25 24 4
gpt4 key购买 nike

我是 python 的新手,正在研究 Donour Sizemore 为 ELM327 开发的名为 pyOBD 的开源项目(不太确定,可能针对更多的 scantool 设备)。我可以看出以下是一种转换方法int 的十六进制值。但它是如何工作的?特别是其中包含 eval 的行。

 def hex_to_int(str):
i = eval("0x" + str, {}, {})
return i

最佳答案

eval像运行 Python 代码一样运行字符串,然后输出结果。

在这种情况下,它会运行类似于 0xaf 的代码,这是一种指定十六进制文字的方式,并输出结果整数。尝试在 Python 解释器中键入 0xaf,您将得到一个整数作为结果。

eval 在不受信任的输入上使用是不安全的。例如,

eval("0xa and __import__('os').remove('some/file/path')")

可能会删除您系统上的文件。

最好使用ast.literal_evalint:

>>> import ast
>>> ast.literal_eval("0xaf")
175
>>> int("af", 16)
175

哪个是安全的并且产生相同的结果。

关于python - 下面的代码片段是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18409953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com