Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash CRC32整数哈希到字符串_Hash_Lua_Crc32 - Fatal编程技术网

Hash CRC32整数哈希到字符串

Hash 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的Lua实现,偶然发现了以下内容:

不管它返回的是整数散列,我怎么才能得到它的等价字符串呢

使用输入“something”返回:1850105976


使用在线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,实现似乎使用实位操作(移位和异或),而不是在问题中链接的代码中使用算术的非常慢的实现。