手动计算IP标头校验和

时间:2015-02-15 13:30:08

标签: c# .net checksum

我想在IP Header checksum中手动计算c#并找到this。 现在我想实施,但在这个例子中我唯一不理解的是激烈的步骤: 获得4E19的最后结果后,它说:

  

所以现在0100111000011001是我们总结所有16个的最终结果   标题中的位字。作为最后一步,我们只需要做一个   赞美它以获得校验和。

4E19 -> 0100111000011001
B1E6 -> 1011000111100110 // CHECKSUM

所以我唯一想知道的是如何从B1E6

到达4E19

1 个答案:

答案 0 :(得分:2)

one's-complement只是反转所有位,你可以通过与0xFFFF进行异或来实现这一点:

ushort a = 0x4E19;
ushort b = (ushort)(a ^ 0xFFFF); // b = 0xB1E6

或使用~反转所有位:

ushort a = 0x4E19;
ushort b = (ushort)~a; // b = 0xB1E6