各函数具体用法本文不赘述。
测试一:只含数字的十六进制字符串
测试二:含有数字和字母的十六进制字符串
测试三:空串(本文的主要目的)
针对空白字符串的结论:stoi
抛异常,程序终止;strtol
返回0(我最喜欢……);sscanf
不执行转换。
测试五:字符串中含有空格
结论:三个函数都是忽略开始的空格,直到再次遇到空格或其它无效字符为止,取中间有效字符转换。
针对普通字节流通讯中十六进制数据包解析的应用:
stoi
最严格,一言不合抛异常,程序终止,不太适合变长数据包的解析,因为被访问的字节可能是空串,但是比较适合定长数据包的解析。strtol
比较适合变长数据包的解析,容错性好,空串返回0,适合逻辑判断。sscanf
,不!喜!欢!,但不拒绝使用……