在流上生成XOR校验和的简便方法?

时间:2013-01-30 01:45:59

标签: c# design-patterns checksum xor

在C#中,有一种简单的方法可以在MemoryStream(二进制)上生成XOR校验和,不包括第一个和最后两个字节吗?

此外,扩展BinaryWriter并在编写Stream时更容易吗?

1 个答案:

答案 0 :(得分:4)

您可以使用LINQ来获得答案:

var checksum = memStream
    .GetBuffer() // Get the underlying byte array
    .Skip(1)     // Skip the first byte
    .Take(memStream.Length-3) // One for the beginning, two more for the end
    .Aggregate(0, (p,v) => p ^ v); // XOR the accumulated value and the next byte