Ідея така.
Будь-яке число можна запакувати в байти, отримавши розмір в 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 () краще числа пакує ніж цей спосіб.
шкідливий наслідок захоплення текстово-орієнтованими мовами типу пхп
зберігання числа в двійковому форматі природно коротше ніж в текстовому, але воно вже є і було з самого початку виникнення комп'ютерів природним чином
Це якщо числа представлені в тексті, якщо числа представлені як числа економії таким чином не добитися. Думаю мало народу зберігають цифри в строкових змінних.
А ідея гарна)