Zakodowanie dwóch liczb 2-cyfrowych w trzech cyfrach

0

Chciałbym skompresować "liczby w liczbie" oraz móc je potem odczytać.

Są dwie dwucyfrowe liczby dziesiętne. Każda z nich ma wartość mniejszą niż 30. Np. 23 oraz 15.

Czy jest możliwy zapis takich liczb, korzystając z 3 cyfr, tak żebym mógł poprawnie odkodować ich wartości?

Docelowo chciałbym w 6 cyfrach zakodować 4 takie liczby dwucyfrowe, jeśli to coś zmienia...

1

Czyli Chcesz zakodować dwie liczby dwucyfrowe w jedną trzycyfrową, i móc potem odkodować?

1

Każda z nich ma wartość mniejszą niż 30

czyli potrzeba 5 bitów żeby zapisać taką liczbę (2^5 == 32) czyli sumarycznie potrzebujesz 10 bitów. Pytanie brzmi czy twoje cyfry muszą być dziesiętne? Bo jeśli zwiększysz charset to spokojnie mógłbyś to zrobić.

17

Dwie liczy mniejsze od 30
czyli masz 30x30 (900) możliwości - czyli się da.
Musisz zbudować przyporządkowanie pomiędzy dwoma liczbami (0..30) (0..30) a liczbą docelową.

Zobacz tą tabelkę (liczby wymierne):
https://pl.wikipedia.org/wiki/Zbi%C3%B3r_przeliczalny

EDIT:
głupi jestem - można DUUUŻO prościej
a * 30 + b = c
w drugą stronę też prosto.

a = c div 30
b = c - (a * 30)

a i b - liczby naturalne [0..29] (można obsłużyć więcej - do 30 da się upchnąć (wtedy mnożymy razy 31) )
c - zakodowana liczba (max 3 cyfry dziesiętne)

1 użytkowników online, w tym zalogowanych: 0, gości: 1