JCZ2MkKb5S8ZX9pq
253 天前
@imn1
的确你说的没错。用于校验的话,另几种算法结果是有问题的。
---
for i in range(10):
j = str(i).encode()
i = pd.Series([i]).astype('bytes').tolist()[0]
k = binascii.crc32(j)
print(f'{type(i)} {i} -> {type(j)} {j} | {k}')
0 -> b'0' | 4108050209
1 -> b'1' | 2212294583
2 -> b'2' | 450215437
3 -> b'3' | 1842515611
4 -> b'4' | 4088798008
5 -> b'5' | 2226203566
6 -> b'6' | 498629140
7 -> b'7' | 1790921346
8 -> b'8' | 4194326291
9 -> b'9' | 2366072709
---
@lxy42
j = struct.pack('i', i)
0 -> b'\x00\x00\x00\x00' | 558161692
1 -> b'\x01\x00\x00\x00' | 2583214201
2 -> b'\x02\x00\x00\x00' | 2337085335
3 -> b'\x03\x00\x00\x00' | 871461106
4 -> b'\x04\x00\x00\x00' | 2921744459
5 -> b'\x05\x00\x00\x00' | 379203374
6 -> b'\x06\x00\x00\x00' | 70222016
7 -> b'\x07\x00\x00\x00' | 3163809701
8 -> b'\x08\x00\x00\x00' | 3840997363
9 -> b'\t\x00\x00\x00' | 1548521622
---
@keepeye bytearray 出来的结果是 class 'bytearray',所以我改了下。
j = bytes([i])
0 -> b'\x00' | 3523407757
1 -> b'\x01' | 2768625435
2 -> b'\x02' | 1007455905
3 -> b'\x03' | 1259060791
4 -> b'\x04' | 3580832660
5 -> b'\x05' | 2724731650
6 -> b'\x06' | 996231864
7 -> b'\x07' | 1281784366
8 -> b'\x08' | 3705235391
9 -> b'\t' | 2883475241
---
@wuwukai007 pandas 的方法,结果是正确的,就是圈子兜得也略有点大。
j = pd.Series([i]).astype('bytes').tolist()[0]
0 -> b'0' | 4108050209
1 -> b'1' | 2212294583
2 -> b'2' | 450215437
3 -> b'3' | 1842515611
4 -> b'4' | 4088798008
5 -> b'5' | 2226203566
6 -> b'6' | 498629140
7 -> b'7' | 1790921346
8 -> b'8' | 4194326291
9 -> b'9' | 2366072709
---
@ysc3839 to_bytes 我一开始试了,有个长度参数的问题,没想好怎么处理。另外它输出的结果好像也是 b'\x00\x01'这类的。