Сжатие байтового массива на Java и распаковка на C

В настоящее время у меня есть следующий массив в программе на Java,

byte[] data = new byte[800];

и я ' Я хотел бы сжать его перед отправкой в ​​микроконтроллер через последовательный порт (115200 бод). Затем я хотел бы распаковать массив на микроконтроллере в C. Однако я не совсем уверен, как это сделать лучше всего. Производительность - это проблема, поскольку микроконтроллер - это просто Arduino, поэтому он не может быть слишком интенсивным по памяти / процессору. Данные более или менее случайны ( edit Я думаю, это не совсем уж случайность, см. Правку ниже), поскольку они представляют значение цвета rgb для каждых 16 бит.

Как лучше всего сжать эти данные? Есть идеи, какое сжатие я могу получить?

edit

Извините за отсутствие информации. Мне нужно, чтобы сжатие было без потерь, и я собираюсь отправлять только 800 байт за раз. Моя проблема в том, что выиграли 800 байт. t передавать достаточно быстро со скоростью 115200 бод, которую я использую. Я надеялся, что смогу немного уменьшить размер, чтобы повысить скорость.

Каждые два байта выглядят так:

0RRRRRGGGGGBBBBB

Где биты RG и B представляют значения для цветовых каналов красного, зеленого и синего соответственно. Каждые два байта - это отдельный светодиод на сетке 20x20. Я могу предположить, что многие наборы из двух байтов будут идентичными, поскольку я часто назначаю одинаковые цветовые коды нескольким светодиодам. Также может случиться так, что значения RGB часто> 15, поскольку я обычно использую яркие цвета, когда могу (однако, это может быть спорным вопросом, поскольку они не все обычно> 15 сразу).

6
задан Anon 11 November 2010 в 22:19
поделиться