(1)
使用int()可以很好地解决此问题,Python会为您完成所有检查:)
int('00480065006C006C006F00200077006F0072006C00640021', 16)6896377547970387516320582441726837832153446723333914657L
将工作。万一失败,您将收到一个
ValueError例外。
简短示例:
int('af', 16)175int('ah', 16) ...ValueError: invalid literal for int() with base 16: 'ah'
(2) 一种 替代
将遍历数据,并确保所有字符落入的范围内
0..9和
a-f/A-F。
string.hexdigits(
'0123456789abcdefABCDEF'因为它包含)是这个有用的
两个 上和下壳体数字。
import stringall(c in string.hexdigits for c in s)
会根据string中数据的有效性返回
True或。
False``s
简短示例:
s = 'af'all(c in string.hexdigits for c in s)Trues = 'ah'all(c in string.hexdigits for c in s)False
注意事项 :
正如@ScottGriffiths在下面的注释中正确指出的那样,
int()如果您的字符串
0x开头包含该方法,则该方法将起作用,而逐字符检查将因此失败。同样,检查一
组 字符比 一串
字符要快,但是值得怀疑的是,这对于短的SMS字符串会很重要,除非您依次处理许多(很多!)字符,在这种情况下,您可以将stringhexditigs转换为一组字符与
set(string.hexdigits)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)