我们如何在 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 作为十六进制数,但是我的实际数字非常大,需要手动计算。
使用功能hex
:
>>> b = 0x346
>>> hex(b)
'0x346'
>>> len(hex(b))-2
3
或使用字符串格式:
>>> len("{:x}".format(b))
3
虽然使用字符串表示作为中间结果在简单方面有一些优点,但它有点浪费时间和内存。我更喜欢数学解决方案(返回没有任何 0x 前缀的纯数字):
from math import ceil, log
def numberLength(n, base=16):
return ceil(log(n+1)/log(base))
+1 调整考虑了这样一个事实,即要获得数字基数的精确幂,您需要前导“1”。
正如 Ashwini 所写,该hex
函数为您完成了艰苦的工作:
十六进制(x)
将整数(任意大小)转换为十六进制字符串。结果是一个有效的 Python 表达式。