﻿#! /usr/bin/env python3
# -*- coding: utf-8 -*-


def decimal_to_binary(decimal: int) -> str:
    assert isinstance(decimal, int) and decimal >= 0
    binary = ""
    while decimal:
        binary = str(decimal % 2) + binary
        decimal = decimal // 2
    return binary if binary else "0"


def binary_to_utf8(binary: str) -> str:
    assert isinstance(binary, str) and len(binary) <= 21
    utf8 = binary
    while len(utf8) <= 21:
        utf8 = "0" + utf8
    if len(binary) <= 7:
        return utf8[-8:]
    elif len(binary) <= 11:
        return "110" + utf8[-11:-6] + "\t" + "10" + utf8[-6:]
    elif len(binary) <= 16:
        return "1110" + utf8[-16:-12] + "\t" + "10" + utf8[-12:-6] + "\t" + "10" + utf8[-6:]
    else:
        return "11110" + utf8[-21:-18] + "\t" + "10" + utf8[-18:-12] + "\t" +\
        "10" + utf8[-12:-6] + "\t" + "10" + utf8[-6:]


# programme principal
decimal = 2845
print(decimal)
binaire = decimal_to_binary(decimal)
print(binaire)
utf8 = binary_to_utf8(binaire)
print(utf8)
