Сжать два или более числа в один байт - PullRequest
11 голосов
/ 17 августа 2010

Я думаю, что это не совсем возможно, но все равно стоит спросить. Скажем, у меня есть два небольших числа (каждое колеблется от 0 до 11). Есть ли способ , чтобы я мог сжать их в один байт и вернуть их позже. Как насчет четырех чисел одинаковых размеров?

Мне нужно что-то вроде: a1 + a2 = x. Я знаю только х и из этого получим а1, а2
Для второй части: a1 + a2 + a3 + a4 = x. Я знаю только х и из этого получим а1, а2, а3, а4
Примечание: я знаю, что вы не можете задать вопрос, просто иллюстрируя мой вопрос.

x должен быть одним байтом. диапазон a1, a2, a3, a4 [0, 11].

Ответы [ 11 ]

0 голосов
/ 17 августа 2010

Таким образом, байт может содержать до 256 значений или FF в шестнадцатеричном формате.Таким образом, вы можете закодировать два числа от 0 до 16 в байте.

byte a1 = 0xf;
byte a2 = 0x9;
byte compress = a1 << 4 | (0x0F & a2);  // should yield 0xf9 in one byte.

4 Числа, которые вы можете сделать, если уменьшить его до диапазона 0-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...