Source code for dawsonia.image_id
[docs]
def encode(book: int, page: int, row: int, col: int, table: int) -> str:
key1 = format(book, "016b") # 16 bits
key2 = format(page, "010b") # 10 bits
key3 = format(row, "06b") # 6 bits
key4 = format(col, "06b") # 6 bits
key5 = format(table, "04b") # 4 bits
key_name = key1 + key2 + key3 + key4 + key5
return str(int(key_name, 2))
[docs]
def decode(key: int, printer: bool = True) -> tuple[int, ...]:
key_binary = format(key, "b")
length = 16 + 10 + 6 + 6 + 4
b = "0" * (length - len(key_binary)) + key_binary
book = int(b[0:16], 2)
page = int(b[16:26], 2)
row = int(b[26:32], 2)
col = int(b[32:38], 2)
table = int(b[38:42], 2)
if printer:
print(f"Book={book}, Page={page}, Row={row}, Col={col}, Table={table}")
return (book, page, row, col, table)