【问题标题】:CRC32 as .NET HashAlgorithm and endiannessCRC32 作为 .NET HashAlgorithm 和字节序
【发布时间】:2018-07-05 06:55:08
【问题描述】:

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

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

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

【问题讨论】:

  • “有什么想法吗?”实在是太宽泛了。试着问一个具体的问题。 Stackoverflow 并不真正适合沉思。

标签: c# .net hash crc hashalgorithm


【解决方案1】:

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

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

【讨论】:

  • 谢谢。还有一个问题是,它是专门做小端的还是只存储恰好是小端的原生表示?
  • “它专门做”和“它只是存储”中的“它”是什么?
猜你喜欢
  • 2021-08-07
  • 1970-01-01
  • 2020-03-27
  • 2017-09-07
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多