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