Просте «стиснення» числа


Ідея така.
Будь-яке число можна запакувати в байти, отримавши розмір в 1,5-2,5 рази менше, наступним алгоритмом:
    1. Беремо три цифри від поточної позиції.
    2. Якщо число, що більше 255, то зміщуємо позицію на мінус 1, і отримуємо двозначне число, яке поміщаємо в байт.
    3. Якщо число, що менше 256, поміщаємо його в байт
    4. Якщо цифра дорівнює 0, поміщаємо цей 0 в окремий байт.
приклад
    число 1257075081

1. Перше тризначне число (125) менше 256, поміщаємо його в перший байт.
2. Наступне тризначне число (707) більше 255, тому в наступний байт поміщаємо 70
3. Наступне тризначне число (750) більше 255, тому в наступний байт поміщаємо 75
4. Наступна цифра 0, тому поміщаємо його в окремий байт
5. Час, що залишився число 81, кладемо його в останній байт.

Разом, отримали 5 байтів, замість 10:
byte array
(
0 => 125,
1 => 70,
2 => 75,
3 => 0,
4 => 81
) розпакування

    Простим об'єднанням отриманого масиву в рядок.
де використовувати
    Шифрування і стиснення даних.

Юніпс таймстемп 4 байта, а у тебе 5, де економія. D

Ну це я просто як приклад числа.
Хоча, напевно, навіть звичайний pack () краще числа пакує ніж цей спосіб.

шкідливий наслідок захоплення текстово-орієнтованими мовами типу пхп
зберігання числа в двійковому форматі природно коротше ніж в текстовому, але воно вже є і було з самого початку виникнення комп'ютерів природним чином

Це якщо числа представлені в тексті, якщо числа представлені як числа економії таким чином не добитися. Думаю мало народу зберігають цифри в строкових змінних.
А ідея гарна)

Схожі статті