如何比较2个数组的按键值是否相等?
2016-11-01 11:30
295 查看
STATIC UINT8 Key1val[6]={0xA5,0x5A,0x04,0xB1,0xB5,0xAA};//按键1
STATIC UINT8 Key2val[6]={0xA5,0x5A,0x04,0xB2,0xB6,0xAA};//按键2
STATIC UINT8 Key3val[6]={0xA5,0x5A,0x04,0xB3,0xB7,0xAA};//按键3
kernel驱动 中,下面三个数组为app发过来的按键键值,开始定义一个数组buf[6]={0};然后把实际接收到的键值保存到buf[]中,再与下面3个数组(键值)比较,思路是怎样的?用for一个个数组一个个值比较吗?buf[i]赋值后]可以直接这样吗?在已知道sizeof Key1val = sizeof buf =6的条件下,这样比较可以吗?
数组中元素间如果没有空隙(由于字节对齐产生的空隙),就可以用户memcpy.对结构数组,由于成员的类型不同,字节对齐产生的空隙存在,就不能用memcpy
memcmp一般编译器会优化的,实际一般不会这么跑(debug模式可能会这样,release模式肯定不会)
数组里面的元素不多,可以一个个比,不过我就是考虑到如果多的话应该有更好的解决办法,而数组和一般变量比较不一样,所以特别请教下大家,很久没来这里发提问帖了,还是一如既往的能学到东西,解决问题!
用memcmp(buf, Key1val, sizeof(buf));解决了
STATIC UINT8 Key2val[6]={0xA5,0x5A,0x04,0xB2,0xB6,0xAA};//按键2
STATIC UINT8 Key3val[6]={0xA5,0x5A,0x04,0xB3,0xB7,0xAA};//按键3
kernel驱动 中,下面三个数组为app发过来的按键键值,开始定义一个数组buf[6]={0};然后把实际接收到的键值保存到buf[]中,再与下面3个数组(键值)比较,思路是怎样的?用for一个个数组一个个值比较吗?buf[i]赋值后]可以直接这样吗?在已知道sizeof Key1val = sizeof buf =6的条件下,这样比较可以吗?
数组中元素间如果没有空隙(由于字节对齐产生的空隙),就可以用户memcpy.对结构数组,由于成员的类型不同,字节对齐产生的空隙存在,就不能用memcpy
memcmp一般编译器会优化的,实际一般不会这么跑(debug模式可能会这样,release模式肯定不会)
数组里面的元素不多,可以一个个比,不过我就是考虑到如果多的话应该有更好的解决办法,而数组和一般变量比较不一样,所以特别请教下大家,很久没来这里发提问帖了,还是一如既往的能学到东西,解决问题!
用memcmp(buf, Key1val, sizeof(buf));解决了
相关文章推荐
- php如何比较两个数组是否相等???
- php如何比较两个数组是否相等???
- 比较一个数组中,是否有相等的元素的不同方法比较
- C++ 如何比较两个char*是否相等
- 比较两个数组是否相等
- Javascript比较两个数组是否相等
- delphi 如何比较两个二维数组是否相等
- [汇编] 比较2个字符串是否相等
- 如何比较两个二维数组是否相等 - 回复 "阿拉丁" 的问题
- 如何比较浮点数(float&double)是否相等?
- 如何比较两个二维数组是否相等
- 比较两个json是否相等,忽略数组内元素顺序
- 比较两个一维数组的内容是否相等
- 如何快速比较这两个字符串是否相等?
- 如何比较两个浮点数是否相等?
- 在C#中如何比较两个byte[]数组相等
- 比较2个list值是否相等的方法
- 比较一个数组内的数据是否相等
- 在C#中如何比较两个byte[]数组相等
- PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法