3

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

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

4

1 回答 1

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
于 2013-01-30T01:52:40.990 回答