gpt4 book ai didi

python - 将元组转换为类型未知的十六进制

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:28 25 4
gpt4 key购买 nike

标题有点误导。基本上,我有一大堆数字,有几种不同的格式。我传递了值和它所在的类型,并期望将它们解压并将它们转换为十六进制字符串。

我最近的尝试是:

realVal = '0x%08x' %  struct.unpack( evalType, ( rawVal ) )

其中 realVal 应该是一个十六进制数字,即该数字的实数值,稍后在我的代码中使用。 evalType 是数字 rawVal 的代码字母类型,而 rawVal 是直接从二进制文件中提取的原始值。 evalType 是通过查找字典来接收的。但是当该值是 float 时,它会中断,但是在我运行的前 100K 情况下,该值是整数,这很好。

所以我尝试首先将这些值转换为整数:

realVal = '0x%08x' %  int ( struct.unpack( evalType, ( rawVal ) ) )

但这不起作用,因为根据错误消息,显然 struct.unpack( evalType, ( rawVal ) ) 是一个元组。

此外,我发现可以通过 float.hex() 完成从浮点到十六进制的转换,因此我添加了一个 if 语句并尝试:

realVal = struct.unpack( evalType, ( rawVal ) ).hex()

当我知道该值是 float 时,它会中断并表示 touples 没有 .hex() 函数。

现在我知道我正在使用一个元组,我想知道为什么当里面的值是整数时它工作得很好,为什么当它是 float 时它会崩溃,以及如何修复它。

最佳答案

通常 struct.unpack(..) 返回一个元组,即使它只返回一个元素,它以 (x,) 的形式返回。所以你应该尝试像这样放置一个零索引:struct.unpack(..)[0]。

关于python - 将元组转换为类型未知的十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18024464/

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