最近在处理接收开发板串口传过来的字符时候,都是些0x11.0x22.0x233.0x33.0x44.0x55.之类的字符,用strlen 统计char 16进制字符的个数时,出现了异常,比如下图代码
pos = 5;
代码运行后打印如下
n = 1;不应该,因为buf是一次性接收的,正常的话n = 5。
可是在虚拟机上打印16进制char 数组的strlen时,却是正常的
n = 5 是正常的字符个数
这是为什么呢,
找到原因了
是buf[1] = 0x00
导致strlen以为buf字符串已经到末尾,只统计到了buf[0]结束了所以n=1
用虚拟机演示如下图所示
n = 2 和预期所示一样