【问题标题】:Hex addition with some limitations有一些限制的十六进制加法
【发布时间】:2014-03-08 21:57:07
【问题描述】:

我正在尝试编写一个函数,该函数将采用两个十六进制字符串并以十六进制值返回它们的总和。 现在,我不允许使用“int()”或“.decode”或为此导入任何模数,而是以老式方式对每个数字求和(就像我们小时候一样) 问题是我不知道如何将两个字符串值添加为十六进制值 就像数字是“15b”和“ba5”一样,所以我想“放”它们 15b +

ba5

但是现在我如何让 python 知道什么是“b”+“5”。

有什么想法吗?建议? 谢谢!

【问题讨论】:

    标签: python-3.x hex


    【解决方案1】:

    Python 确实知道"b" + "5" 是什么,它是"b5"

    要将这些十六进制字符映射到整数,您可以使用字典:

    hexmap = {"1": 1, ..., "a": 10, ...}
    

    要计算所有数字,请记住反转字符串的索引是 16 的幂:

    decimal = sum(16**i * hexmap(s) for i, s in enumerate(reversed(hexstring)))
    

    然后您可以将两个整数相加。这比试图处理通过添加额外的东西要容易得多,例如b + 9

    【讨论】:

    • 它做得更容易,但我们应该以艰难的方式去做。指令清楚地表明要单独转换每个数字并使用循环评估总和 - 与我们在这里的方式相同:mathforum.org/library/drmath/view/66714.html 如果指令不同,我可以做得更快
    • 您仍然可以使用hexmap 来定义例如"b""5",但您必须在每个步骤中处理结转金额。
    猜你喜欢
    • 1970-01-01
    • 2016-08-12
    • 2012-05-27
    • 2016-08-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2014-07-10
    • 2018-07-26
    相关资源
    最近更新 更多