BitConverter.ToInt32(val,8) 表示从byte[]数组第8个成员开始读取。
Int32 是4字节32位的整数。 从第8个byte开始读取4个字节 刚好是 00 0f 01 cc
对两个数进行And Or 运算,是对这两个数进行位运算。
比如 6 and 3 = 2
6的2进制是 0110
3的2进制是 0011 (and运算)
——————————————
结果就是 0010 (十进制的2)
and 要求 两个数的对应位置上都是1 结果位才是1
比如6 or 3 = 7
6的2进制是 0110
3的2进制是 0011 (or运算)
——————————————
结果就是 0111 (十进制的7)
or运算 只要对应位有一个为1 结果位就是1
你4楼有这么说的:
0x10 为数据项的第五字节,即00010000b,D0D1为0,说明当前仪表显示没有小数点,微机直接显示没有小数点的数据即可,若接收的数据为983500,直接显示成9835kg即可;如果D0D1为2,若接收的数据为983500,则应显示为9835.00kg;D2D3为0,说明当前仪表称重状态为毛重;D4为1,表明当前重量还不稳定,当D4为0时,当前重量稳定,仪表上显示稳定标志;
仪表可能返回 00010000 表示状态不稳定
也可能返回 00000000 表示状态稳定
也可能返回 00000010 表示状态稳定。同时表示结果值是带小数点的。
我们只需要检查D4位就行了。所以用返回值和16(二进制0001000)进行and运算。
因为16的D4位是1 其他位是0 。 正好可以得出返回值的D4位
[此贴子已经被作者于2010-7-2 11:34:30编辑过]