Hash CRC32整数哈希到字符串
我正在寻找CRC32的Lua实现,偶然发现了以下内容: 不管它返回的是整数散列,我怎么才能得到它的等价字符串呢 使用输入“something”返回:1850105976Hash CRC32整数哈希到字符串,hash,lua,crc32,Hash,Lua,Crc32,我正在寻找CRC32的Lua实现,偶然发现了以下内容: 不管它返回的是整数散列,我怎么才能得到它的等价字符串呢 使用输入“something”返回:1850105976 使用在线CRC32生成器,我得到:“879fb991”有许多CRC-32算法。您可以在中找到十种不同的CRC-32。你找到的Lua代码和你找到的在线CRC32(某处——没有提供链接)是不同的CRC-32 您所说的“字符串等价物”是指32位整数的十六进制表示形式。在Lua中,您可以将string.format与打印格式%x一起使
使用在线CRC32生成器,我得到:“879fb991”有许多CRC-32算法。您可以在中找到十种不同的CRC-32。你找到的Lua代码和你找到的在线CRC32(某处——没有提供链接)是不同的CRC-32 您所说的“字符串等价物”是指32位整数的十六进制表示形式。在Lua中,您可以将
string.format
与打印格式%x
一起使用以获取十六进制。对于您给出的示例,1850105976
,即6e466078
您的“在线CRC32生成器”似乎正在使用BZIP2 CRC-32,尽管它以相反顺序(小端)显示生成的CRC的字节。因此,在这种情况下,十六进制的实际CRC是
91b99f87
。您找到的Lua代码似乎使用的是MPEG-2 CRC-32。它们之间的唯一区别是具有ffffffff
的异或。因此,事实上,您从两个不同来源获得的两个CRC的异或,6e466078^91b99f87
是ffffffff
应该是09DA31FB
至少我看到了存在,但这并不能真正回答我的问题谢谢大家@用户1826176您也可以尝试:(可通过luarocks访问)@hjpotter92,这一款看起来好多了。它是更标准的PKZip/ITU v.42 CRC-32,实现似乎使用实位操作(移位和异或),而不是在问题中链接的代码中使用算术的非常慢的实现。