Διαδρομές
/
Elixir
Elixir
/
Ασκήσεις
/
Ποσότητα μεταβλητού μήκους
Ποσότητα μεταβλητού μήκους

Ποσότητα μεταβλητού μήκους

Μέτριο

Οδηγίες

Υλοποίησε την κωδικοποίηση και την αποκωδικοποίηση ποσότητας μεταβλητού μήκους.

Στόχος αυτής της άσκησης είναι να υλοποιήσεις την κωδικοποίηση/αποκωδικοποίηση VLQ.

Με λίγα λόγια, στόχος αυτής της κωδικοποίησης είναι να κωδικοποιεί ακέραιες τιμές με τρόπο που εξοικονομεί bytes. Μόνο τα πρώτα 7 bit κάθε byte είναι σημαντικά (δεξιά στοιχισμένα, κάπως σαν ένα byte ASCII). Έτσι, αν έχεις μια τιμή 32 bit, πρέπει να την αναλύσεις σε μια σειρά από byte των 7 bit. Φυσικά, θα έχεις μεταβλητό αριθμό byte ανάλογα με τον ακέραιό σου. Για να δείξεις ποιο είναι το τελευταίο byte της σειράς, αφήνεις το bit #7 στο 0. Σε όλα τα προηγούμενα byte, θέτεις το bit #7 στο 1.

Έτσι, αν ένας ακέραιος είναι μεταξύ 0-127, μπορεί να αναπαρασταθεί με ένα byte. Αν και το VLQ μπορεί να χειριστεί αριθμούς αυθαίρετου μεγέθους, σε αυτή την άσκηση θα περιοριστούμε μόνο σε αριθμούς που χωρούν σε έναν ανυπόγραφο ακέραιο 32 bit. Ακολουθούν παραδείγματα ακεραίων ως τιμών 32 bit και οι ποσότητες μεταβλητού μήκους στις οποίες αντιστοιχούν:

 NUMBER        VARIABLE QUANTITY
00000000              00
00000040              40
0000007F              7F
00000080             81 00
00002000             C0 00
00003FFF             FF 7F
00004000           81 80 00
00100000           C0 80 00
001FFFFF           FF FF 7F
00200000          81 80 80 00
08000000          C0 80 80 00
0FFFFFFF          FF FF FF 7F
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elixir Exercism

Έτοιμος να ξεκινήσεις την άσκηση Ποσότητα μεταβλητού μήκους;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elixir με 58 έννοιες168 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.