Я создаю онлайн-игру, и, как и во многих онлайн-играх, мне потребуется множество данных, передаваемых через Интернет, поэтому мне нужно иметь возможность эффективно сжимать данные.
Например, я хочу отправить смой клиент на сервере координаты моего персонажа.
Редактировать: да, плохой пример, позвольте мне изменить значения ...
Координата X (скажем, от -32 до 32). (65 различных возможных значений) Координата Y (от -32 до 32). (65 различных возможных значений) Координата Z (от -16 до 16). (33 различных возможных значения)
я знаю, что X был сохранен до Y, который был сохранен до Zв байтовом массиве перед отправкой.
Я знаю на сервере, что X не может быть ниже -31 или выше 32, то же самое для других значений.
65 * 65 * 33 =139,425 различных возможных комбинаций значений для 3 чисел = 17 битов.
7 + 7 + 5 = 19 битов.
, поэтому, если бы я хранил X в первых 7 битах, то Yв следующих 7 битах, а затем Z в следующих 5 битах это займет 19 бит, и яЯ мог бы легко прочитать их на другой стороне, но, поскольку все возможные комбинации значений, которые могут принять эти 3 числа, заняли бы только 17 бит, я чувствую, что теряю здесь место.Есть ли хороший способ сжать эти 3 числа, используя менее 19 бит?
Конечно, для 19 бит и 17 бит нужно 3 байта, но если бы это было 17 бит и 15 бит, это бы имело огромную разницу.