|
|
|
Идея такая.
Любое число можно запаковать в байты, получив размер в 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
)
РаспаковкаПростым объединением получившегося массива в строку.
Где использоватьШифрование и сжатие данных. |
Есть вопросы по настройке игровых серверов? Добро пожаловать на форум!
|
|
|
© 20062014,
HarpyWar
Любое копирование информации с этого сайта - только со ссылкой на источник.
Это в одинаковой мере распространяется на любую авторскую информацию в интернете.
Юнипс таймстемп 4 байта, а у тебя 5, где экономия? :D