有点复杂的十六进制到十进制

时间:2013-10-16 14:09:58

标签: python decimal hex data-conversion

我不确定这是否是一个简单的问题,我仍然相对较新的Python ...但无论如何我会正确的。到目前为止,我有一个程序,它将每2个十六进制数转换为十进制数(这将在示例中更有意义。)它们每个都用逗号分隔,并且可以是无限长....我是什么我想知道是否有办法将每个数字转换回十六进制数,连接那些十六进制数,然后将该数字转换为十进制...我不想乱转其余的转换因为我做了不写第一部分,其中的部分是程序的其他操作所必需的......

所以为每个人提供视觉效果:

这是我现在的小数:(65,222,102,102)

这是它来自的十六进制:41de6666(所以41基16 = 65基10,基数16 = 222基10等)

以下是我实际想要的小数:1105094246

感谢大家对此提出的任何意见,我们非常感谢

编辑:并澄清我没有41de6666可以轻松地将其转换为十进制,我需要将第一个给定列表转换为最终结果

1 个答案:

答案 0 :(得分:2)

这是一个Python 3版本。它使用struct.unpack方法构建一个大端的4字节整数:

>>> import struct
>>> x=(65,222,102,102)
>>> struct.unpack('>L',bytes(x))[0]
1105094246

Python 2版本没有bytes,因此使用pack构建将要解压缩的字节字符串:

>>> import struct
>>> x=(65,222,102,102)
>>> struct.unpack('>L',struct.pack('4B',*x))[0]
1105094246

*x语法将元组扩展为pack预期的四个参数。