def bin2bcd(_bin):
DIGITS_BCD = len(str(_bin))
bcd = [0] * DIGITS_BCD
for i in range(DIGITS_BCD - 1):
_bin, bcd[i] = divmod(_bin, 10)
bcd[DIGITS_BCD - 1] = _bin
return bcd
def bin2bcd_dubdab(_bin):
DIGITS_BCD = len(str(_bin))
BITS_BCD = DIGITS_BCD * 4
bcd = 0
for i in range(BITS_BCD - 1, 0, -1):
bcd = bcd << 1 | (_bin >> i & 1)
for j in range(BITS_BCD, -1, -4):
if (bcd >> j & 0xF) > 4:
bcd += 3 << j
return (bcd << 1) | (_bin & 1)
val = 123456789000999
print(bin2bcd(val))
print(hex(bin2bcd_dubdab(val)))
print(hex(eval("0x" + str(val))))