📅  最后修改于: 2023-12-03 15:10:52.703000             🧑  作者: Mango
当我们需要验证一个字符串是否表示一个十六进制数时,可以使用以下方法进行验证。
可以使用正则表达式来验证一个字符串是否是十六进制数,如果是则返回True
,否则返回False
。
import re
def is_hex(string):
pattern = r'^[0-9A-Fa-f]+$'
return bool(re.match(pattern, string))
使用方法:
>>> is_hex('1234abcd') # True
>>> is_hex('0x1234abcd') # False
>>> is_hex('1234abcdZ') # False
int()
函数可以将字符串作为参数传递给int()
函数,如果可以转换为十六进制数则返回对应的数值,否则会抛出ValueError
异常。
def is_hex(string):
try:
int(string, 16)
return True
except ValueError:
return False
使用方法:
>>> is_hex('1234abcd') # True
>>> is_hex('0x1234abcd') # False
>>> is_hex('1234abcdZ') # False
binascii
模块可以使用binascii
模块的unhexlify()
函数将十六进制字符串转换为二进制数据,如果转换出错则抛出binascii.Error
异常。
import binascii
def is_hex(string):
try:
binascii.unhexlify(string)
return True
except binascii.Error:
return False
使用方法:
>>> is_hex('1234abcd') # True
>>> is_hex('0x1234abcd') # False
>>> is_hex('1234abcdZ') # False