CRC32计算为uint32,而.NET中的HashAlgorithm按照约定返回byte[]。当然,我可以很容易地用bytes = BitConverter.GetBytes(hash)转换它,但这受系统的“字节序”的影响(当然,高字节顺序几乎不可能)。
无论如何,我一直在想,有什么惯例可以遵循吗?我有一种感觉,那就是让hash.ToString("X")和bytes.ToHex() (假设.ToHex()存在)看起来是一样的。
我已经检查过https://github.com/vurdalakov/crc32/wiki/CRC32,它不能做到这一点。有什么想法吗?
发布于 2018-01-26 08:16:50
我只能举一些例子,其中zip和gzip文件格式以小端顺序存储CRC。我相信有人可以找到以大端顺序存储32位CRC的示例,有时称为“网络顺序”,因为大端顺序是用于网络通信的约定。
如果您正在定义自己的协议,那么您可以选择您喜欢的任何一个。为了使代码具有可移植性,您需要使用移位运算符来拆分字节,以便机器的字节顺序不会影响结果。
https://stackoverflow.com/questions/48452804
复制相似问题