CRC32 作为 .NET HashAlgorithm 和字节序



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

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

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

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

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

最新更新