2

我们如何在 Python 语言中得到一个十六进制数的长度?我尝试使用此代码,但即使这也显示出一些错误。

i = 0
def hex_len(a):
    if a > 0x0:
        # i = 0
        i = i + 1
        a = a/16
        return i
b = 0x346
print(hex_len(b))

这里我只是用了 346 作为十六进制数,但是我的实际数字非常大,需要手动计算。

4

3 回答 3

7

使用功能hex

>>> b = 0x346
>>> hex(b)
'0x346'
>>> len(hex(b))-2
3

或使用字符串格式:

>>> len("{:x}".format(b))
3
于 2013-06-28T15:13:44.097 回答
6

虽然使用字符串表示作为中间结果在简单方面有一些优点,但它有点浪费时间和内存。我更喜欢数学解决方案(返回没有任何 0x 前缀的纯数字):

from math import ceil, log

def numberLength(n, base=16): 
    return ceil(log(n+1)/log(base))

+1 调整考虑了这样一个事实,即要获得数字基数的精确幂,您需要前导“1”。

于 2013-06-28T15:29:16.263 回答
2

正如 Ashwini 所写,该hex函数为您完成了艰苦的工作:

十六进制(x)

将整数(任意大小)转换为十六进制字符串。结果是一个有效的 Python 表达式。

于 2013-06-28T15:27:27.090 回答