LNU Python Poziom Rozszerzony - Zaawansowane funkcje funkcji zadanie 11
Utwórz funkcję parseInt() przyjmującą argumenty x, base i changeEndianness zamieniającą przekazany przez parametr x zapis nieujemnej liczby całkowitej w podstawie base na liczbę. Ponadto, jeśli parametr changeEndianness jest ustawiony na True funkcja powinna obrócić kolejność bajtów w wynikowej liczbie (wykorzystując jedynie tyle bajtów, ile jest niezbędnych do jej przechowania). x powinien być obowiązkowym argumentem pozycyjnym, base powinno być opcjonalnym argumentem o wartości domyślnej równej 10, który można przekazać pozycyjnie oraz przez nazwę, natomiast changeEndianness powinno być nazwanym argumentem opcjonalnym o wartości domyślnej False.
Nie potrafię obrócić kolejności bajtów w liczbie, ktoś to zrobił?
Odpowiedź:
def parseInt(x, base=10, changeEndianness=False):
# Zamiana liczby na string w danym systemie liczbowym
x_str = format(int(x), 'x' if base == 16 else '' if base == 10 else 'o')
# Obrócenie kolejności bajtów, jeśli changeEndianness == True
if changeEndianness:
x_str = x_str[::-1]
# Zamiana stringa na liczbę całkowitą
return int(x_str, 16 if base == 16 else 10 if base == 10 else 8)