def is_hex(value):
if not is_string(value):
return False
elif value.lower() in {b'0x', '0x'}:
return True
unprefixed_value = remove_0x_prefix(value)
if len(unprefixed_value) % 2 != 0:
value_to_decode = (b'0' if is_bytes(unprefixed_value) else '0') + unprefixed_value
else:
value_to_decode = unprefixed_value
if any(char not in string.hexdigits for char in force_obj_to_text(value_to_decode)):
return False
try:
value_as_bytes = codecs.decode(value_to_decode, 'hex')
except binascii.Error:
return False
except TypeError:
return False
else:
return bool(value_as_bytes)
评论列表
文章目录