Zakodowanie dwóch liczb 2-cyfrowych w trzech cyfrach

Zakodowanie dwóch liczb 2-cyfrowych w trzech cyfrach
Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7113
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...

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5069
1

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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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ć.

jarekr000000
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: U krasnoludów - pod górą
  • Postów: 4730
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.

Kopiuj
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)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.