private int ControlDecode(byte b)
{
int itype = -1;
int ipacekttype = b & 0xF0;
switch (ipacekttype)
{
case 0x40:
if ((b & 0x0F) != 0x0F)
itype = 0x45;
else
itype = 0x4F;
break;
case 0x50:
itype = 0x45;
break;
case 0x00:
itype = 0x00;
break;
case 0x80:
itype = 0x89;
break;
case 0x90:
itype = 0x89;
break;
default:
break;
}
return itype;
}
如果b = 51,则ipacekttype = 48(根据代码执行) 但是在掩盖时我们应该得到50作为答案 任何人都可以解释一下(b& 0xF0)如何在这里工作吗?
答案 0 :(得分:2)
看起来您正在混合十进制表示法和十六进制表示法。当您说b=51
时,51
显示为十进制,因此bn=0x33
为十六进制。这解释了为什么ipacekttype=48
- 再次,十进制,因为它是十六进制的ipacekttype=0x30
,也就是用0x33
掩盖0xF0
之后应该是什么。