【发布时间】:2018-11-08 10:24:17
【问题描述】:
给定一个十六进制字符串或bytearray 的输入,我需要将其转换为整数。
当然,一种方法是检查类型,例如:
a = '0xb8c2659029395bdf'
b = bytearray([0xb8,0xc2,0x65,0x90,0x29,0x39,0x5b,0xdf])
def func(x):
if type(x) == str:
return int(x,16)
else:
return int('0x'+''.join(['{:02x}'.format(i) for i in x]),16)
print(func(a))
print(func(b))
但我正在寻找一种“更整洁”的方式。
我想到的一个想法是首先将输入转换为其中一种类型。
例如:
def func(x):
return int(str(x),16)
或者:
def func(x):
return int('0x'+''.join(['{:02x}'.format(i) for i in bytearray(x)]),16)
但对于第一个选项,我得到TypeError: string argument without an encoding。
对于第二个选项,我得到ValueError: invalid literal for int() with base 16。
知道如何解决这个问题,或者以不同的方式解决原来的问题吗?
【问题讨论】:
-
bytearray.fromhex("xxxxxx")?
标签: python arrays string python-3.x