十六进制数的长度

时间:2013-06-28 15:12:19

标签: python counting

如何在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作为十六进制数字,但我的实际数字非常大,无法手动计算。

3 个答案:

答案 0 :(得分:7)

使用函数hex

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

或使用字符串格式:

>>> len("{:x}".format(b))
3

答案 1 :(得分:3)

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

from math import ceil, log

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

+1调整会照顾到这样一个事实:对于你的数字基础的精确力量,你需要一个领先的“1”。

答案 2 :(得分:2)

正如Ashwini写的那样,hex函数为你付出了艰苦的努力:

  

十六进制(x)的

     

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