Math - большое число из пары чисел с возможностью экспорта - PullRequest
0 голосов
/ 17 июля 2011

Допустим, у меня есть несколько чисел, например

5,10,7,8,9,6,2,4,8,5,3,9,78,5,6

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

РЕДАКТИРОВАТЬ ОК, поэтому мне нужно отправить этот текст в UDP, но мне нужно как можно меньше битов.Я посылаю несколько вариантов, например firstcolor-secondcolor, скажем, у меня есть 15 цветов.Каждый цвет - это просто число от 1 до 199, но, может быть, есть лучший способ отправить эти данные?спасибо.

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Никто не может сказать, какая схема сжатия лучше для вас.У нас нет никакой информации о номерах.Но в качестве первой попытки вы можете просто записать их в файл и использовать сжатие gzip.Или bzip2, или 7zip.

И только если все это не поможет, вам следует подумать о том, чтобы выполнить сжатие самостоятельно.

Вы также не сообщили нам о своей работесистемы (исходный компьютер, целевой компьютер) и откуда вы получаете данные.

[Обновление, основанное на редактировании в вопросе:] Таким образом, в основном вы хотите отправить некоторые числа в диапазоне от 1 до 199.Это очень близко к тому, что может вместить один byte.

Если все в порядке, если вы используете 8 бит на число (это означает, что вы тратите 0,4 бит на число), это тривиально, но сильно зависит от программированияязык.Вот как это может выглядеть в синтаксисе Java:

ByteBuffer buf = new ByteBuffer();
buf.add(1);
buf.add(199);
buf.add(78);
buf.add(7);

udpSocket.send(buf.toArray());
0 голосов
/ 17 июля 2011

Получите библиотеку сжатия (например, zlib) и введите свои числа (например, в массив целых чисел). Это сжатие ваших данных. Эта же библиотека должна позволить вам полностью изменить процесс и распаковать данные на другом конце, чтобы вернуть ваши значения.

Если вы хотите улучшить свои алгоритмические знания, а ваши требования просты и некритичны, я рекомендую попробовать написать собственный код сжатия / распаковки. Если нет, возьмите какой-нибудь код с полки - вокруг него загружает хороших библиотек.

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