我下载的一些c#代码包括基于十六进制的计算。
eg. int length = ((((byte) hexstr[0x10]) & 0x80) > 0) ? 0x10 : 8;
当我将此代码更改为基于正常小数的代码时
int length = ((((byte) hexstr[16]) & 128) > 0) ? 16 : 8;
它给出了相同的解决方案而没有给出任何错误 它仍然正常运行 所以我想知道的是为什么大多数代码都使用十六进制基数,这比普通的十进制数字更难以理解。
如果有人知道这一点,请告诉我。
答案 0 :(得分:4)
它更清楚地显示位模式。 0x80显然是顶部nybble设置为8并且底部nybble设置为0的值...从十进制值开始并不清楚。
另一个例子,如果我想屏蔽整数的第二个和第三个字节,我可能会使用:
int masked = original & 0xffff00;
我在没有计算器或任何类似的情况下编写了该代码。对于十进制等值,我不可能做同样的事情 - 我不能将65535乘以256并且任何成功的可能性,并且结果代码也不会那么清楚。