def encode(data, map):
result = b''
for char in data:
- value = char
+ if sys.version_info[0] == 2:
+ value = ord(char)
+ else:
+ value = char
+
Q = (value ^ 0x80) // len(map)
R = value % len(map)
- result += bytes([map[Q]])
- result += bytes([map[R]])
+
+ result += bytes(bytearray([map[Q]]))
+ result += bytes(bytearray([map[R]]))
+
return result
# Hash the bytes in data and then encode the digest with the characters in map
def getTwoBitsFromBitField(bitField,offset):
byteNumber = offset // 4
bitPosition = 6 - 2*(offset % 4)
- return bitField[byteNumber] >> bitPosition & 3
-
+ if sys.version_info[0] == 2:
+ return ord(bitField[byteNumber]) >> bitPosition & 3
+ else:
+ return bitField[byteNumber] >> bitPosition & 3
+
# Returns the six bits at offset from a bit field
def getSixBitsFromBitField(bitField,offset):
offset *= 3
global charMap3
PID = b''
for position in range (0,8):
- PID += bytes([charMap3[getSixBitsFromBitField(hash,position)]])
+ PID += bytes(bytearray([charMap3[getSixBitsFromBitField(hash,position)]]))
+
return PID
# Encryption table used to generate the device PID
index = (index+1) %8
for counter in range (0,8):
index = ((((pid[counter] >>5) & 3) ^ pid[counter]) & 0x1f) + (pid[counter] >> 7)
- pidAscii += bytes([charMap4[index]])
+ pidAscii += bytes(bytearray([charMap4[index]]))
return pidAscii
def crc32(s):
for i in (0,1):
b = crc & 0xff
pos = (b // l) ^ (b % l)
- res += bytes([charMap4[pos%l]])
+ res += bytes(bytearray([charMap4[pos%l]]))
crc >>= 8
return res
crc = crc32(s)
arr1 = [0]*l
for i in range(len(s)):
- arr1[i%l] ^= s[i]
+ 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 = b""
for i in range(l):
b = arr1[i] & 0xff
- pid += bytes([charMap4[(b >> 7) + ((b >> 5 & 3) ^ (b & 0x1f))]])
+ pid += bytes(bytearray([charMap4[(b >> 7) + ((b >> 5 & 3) ^ (b & 0x1f))]]))
return pid
def encode(data, map):
result = b''
for char in data:
- value = char
+ if sys.version_info[0] == 2:
+ value = ord(char)
+ else:
+ value = char
+
Q = (value ^ 0x80) // len(map)
R = value % len(map)
- result += bytes([map[Q]])
- result += bytes([map[R]])
+
+ result += bytes(bytearray([map[Q]]))
+ result += bytes(bytearray([map[R]]))
+
return result
# Hash the bytes in data and then encode the digest with the characters in map