C#的Hexa基数和十进制基数

时间:2011-11-08 08:37:54

标签: c# hex

我下载的一些c#代码包括基于十六进制的计算。

eg. int length = ((((byte) hexstr[0x10]) & 0x80) > 0) ? 0x10 : 8;

当我将此代码更改为基于正常小数的代码时

int length = ((((byte) hexstr[16]) & 128) > 0) ? 16 : 8;

它给出了相同的解决方案而没有给出任何错误 它仍然正常运行 所以我想知道的是为什么大多数代码都使用十六进制基数,这比普通的十进制数字更难以理解。

如果有人知道这一点,请告诉我。

1 个答案:

答案 0 :(得分:4)

它更清楚地显示位模式。 0x80显然是顶部nybble设置为8并且底部nybble设置为0的值...从十进制值开始并不清楚。

另一个例子,如果我想屏蔽整数的第二个和第三个字节,我可能会使用:

int masked = original & 0xffff00;

我在没有计算器或任何类似的情况下编写了该代码。对于十进制等值,我不可能做同样的事情 - 我不能将65535乘以256并且任何成功的可能性,并且结果代码也不会那么清楚。