Для перевода в двоичную, восьмеричную и шестнадцатиричную систему в Питоне есть встроенные функции bin, oct, hex.
Хотя ручной конвертер в шестнадцатиричную когда-то писал... Переводит как целые так и вещественные числа.
Если в функции int_part заменить 16 на основание системы счисления - она будет выдавать результат по этому основанию, то есть 5 - 101 в двоичной СИ
letters = [chr(i) for i in range(ord('a'), ord('f') + 1)]
nums = [i for i in range(10, 16)]
def int_part(n):
global letters, nums
result, final = [], []
if not n:
return '0x0'
else:
while n > 0:
result += [n % 16]
n = n // 16
for i in result:
if i in nums:
final += letters[nums.index(i)]
else:
final += str(i)
return ' '.join(['0x' + ''.join((final[::-1]))])
def float_part(f):
global letters, nums
result, final, i = [], [], 0
while f - int(f) or i < 11:
f *= 16
result += [int(f)]
f = f - int(f)
i += 1
for i in result:
if i in nums:
final += letters[nums.index(i)]
else:
final += str(i)
return ''.join(final)
try:
decimal = input('DEC ')
if '.' in decimal and decimal[0] != '.' and decimal[-1] != '.':
decimal = float(decimal)
else:
decimal = int(decimal)
if isinstance(decimal, int):
print('HEX', int_part(decimal))
if isinstance(decimal, float):
float_p = decimal - int(decimal)
int_p = int(decimal)
print('HEX', int_part(int_p) + '.' + float_part(float_p))
except ValueError:
print('Wrong input')
# 6783.05493
# 1A7F.0E0FE47991B
счисления.
Тестовые данные:
Формат входных данных
На вход программе подаётся одна строка - число.
5
Формат выходных данных
Программа должна вывести текст в соответствии с условием задачи.
0b101