Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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
Python—为什么CRC32(np.int64(1))的结果不同于CRC32(np.int32(1))?_Python_Numpy_Crc32_Int64_Int32 - Fatal编程技术网

Python—为什么CRC32(np.int64(1))的结果不同于CRC32(np.int32(1))?

Python—为什么CRC32(np.int64(1))的结果不同于CRC32(np.int32(1))?,python,numpy,crc32,int64,int32,Python,Numpy,Crc32,Int64,Int32,Python中的CRC32比较: >>> zlib.crc32(np.int64(1)) == zlib.crc32(np.int32(1)) False >>> np.int64(1) == np.int32(1) True >>> zlib.crc32(np.int64(1)) 2844319735 >>> zlib.crc32(np.int32(1)) 2583214201 1的多项式表达式,无论其int64或

Python中的CRC32比较:

>>> zlib.crc32(np.int64(1)) == zlib.crc32(np.int32(1))
False

>>> np.int64(1) == np.int32(1)
True

>>> zlib.crc32(np.int64(1))
2844319735

>>> zlib.crc32(np.int32(1))
2583214201
1的多项式表达式,无论其int64或int32数据类型如何,都应该相同,但它们的CRC32结果不同。 我尝试了除1之外的许多其他数字,但int64和int32结果的CRC32仍然不匹配

如果您能帮助解决这个令人难以置信的困惑问题,我们将不胜感激。

cbc32可以处理字节

int32是4字节,
1
01 00

>>> zlib.crc32(np.int64(1)) == zlib.crc32(b''.join([np.int32(1), np.int32(0)]))
True
int64是8字节,
1
01 00

>>> zlib.crc32(np.int64(1)) == zlib.crc32(b''.join([np.int32(1), np.int32(0)]))
True

CRC在字节流上运行,而不是在数字上运行。一个是(可能)做CRC32(1,0,0,0,0,0,0),另一个是做CRC32(1,0,0,0),假设小Endian。我明白了。稍微扭曲一下我的问题,假设我的系统是Big-Endian,那么zlib.crc32(np.int64(1))==zlib.crc32(np.int32(1))将返回True,是否正确?否。crc32对长度敏感。您可以根据需要为其输入任意多个零,并(通常)得到不同的结果,至少在您开始碰撞之前是这样。