eLock的项目,查设备详细信息,需要做一个判断,看参数设定的ID与设备本身的ID是否符合
一开始使用了
if (0 == strncmp(hex, pdaInfo.dev_id, PDA_ID_LEN))
{ }
{ }
然而试了好几个参数ID,不管与设备本身ID是否符合,都会进行到花括号里面...
最后了解到了原因:
设备ID并不是一串字符,而是一串十六进制数,看起来形如"0012ab"
这样一来,存储在dev_id成为3个字节,分别是00,12,ab
显然,如果hex参数输入的也是一个00开头的数组,一用strncmp就会认为两个字符串都是"",当然结果==0了
所以,在非字符串比较的时候,要用memcmp
上述过程改为
if (0 == memcmp(hex, pdaInfo.dev_id, PDA_ID_LEN))
{ }
{ }
运行正确