|
|
|
@ -33,7 +33,7 @@ def checksumPid(s):
|
|
|
|
|
for i in (0,1):
|
|
|
|
|
b = crc & 0xff
|
|
|
|
|
pos = (b // l) ^ (b % l)
|
|
|
|
|
res += letters[pos%l]
|
|
|
|
|
res += bytes(bytearray([letters[pos%l]]))
|
|
|
|
|
crc >>= 8
|
|
|
|
|
|
|
|
|
|
return res
|
|
|
|
@ -43,16 +43,19 @@ def pidFromSerial(s, l):
|
|
|
|
|
|
|
|
|
|
arr1 = [0]*l
|
|
|
|
|
for i in range(len(s)):
|
|
|
|
|
if sys.version_info[0] == 2:
|
|
|
|
|
arr1[i%l] ^= ord(s[i])
|
|
|
|
|
else:
|
|
|
|
|
arr1[i%l] ^= s[i]
|
|
|
|
|
|
|
|
|
|
crc_bytes = [crc >> 24 & 0xff, crc >> 16 & 0xff, crc >> 8 & 0xff, crc & 0xff]
|
|
|
|
|
for i in range(l):
|
|
|
|
|
arr1[i] ^= crc_bytes[i&3]
|
|
|
|
|
|
|
|
|
|
pid = ''
|
|
|
|
|
pid = b""
|
|
|
|
|
for i in range(l):
|
|
|
|
|
b = arr1[i] & 0xff
|
|
|
|
|
pid+=letters[(b >> 7) + ((b >> 5 & 3) ^ (b & 0x1f))]
|
|
|
|
|
pid+=bytes(bytearray([letters[(b >> 7) + ((b >> 5 & 3) ^ (b & 0x1f))]]))
|
|
|
|
|
|
|
|
|
|
return pid
|
|
|
|
|
|
|
|
|
|