1

CRC32 计算为uint32,而HashAlgorithm在 .NET 中按惯例返回byte[]。当然,我可以轻松地转换它,bytes = BitConverter.GetBytes(hash)但这会受到系统“字节序”的影响(当然,大端序几乎没有机会)。

无论如何,我一直在想有什么约定可以遵循吗?我有一种感觉,它应该是大端的,hash.ToString("X")并且bytes.ToHex()(假设.ToHex()存在)看起来是一样的。

我检查了https://github.com/vurdalakov/crc32/wiki/CRC32并没有这样做。有什么想法吗?

4

1 回答 1

0

我只能举一些例子,其中 zip 和 gzip 文件格式以 little-endian 顺序存储 CRC。我相信有人可以找到以大端顺序存储 32 位 CRC 的示例,有时称为“网络顺序”,因为大端旨在成为网络通信的约定。

如果您要定义自己的协议,那么您可以选择任何您喜欢的协议。为了使代码可移植,您需要使用移位运算符来分离字节,以便机器的字节序不会影响结果。

于 2018-01-26T00:16:50.460 回答