Есть ли способ конвертировать мои 120 бит данных в 32 бита, и после получения моих 120-битных данных из этих 32 бит?Преобразование данных на основе Java 120 бит в 32 бита
ответ
Это называется сжатием без потерь, и вы обязательно должны прочитать об этом tutorial.
С учетом сказанного, сжатие, которое вы можете выполнять на любой части данных, сильно зависит от избыточности информации в данных. Таким образом, вы можете получить его до 32 бит, но никаких гарантий нет.
На самом деле у меня есть два ips (по 32 бит каждый), два номера портов (по 16 бит каждый) и временная метка (24 бит), которые суммируют до 120 бит, и я хотел, чтобы она представлялась в 32 битах – blackhole
Невозможно сжать каждые 120-битные данные в 32-разрядные данные и распаковать обратно к оригиналу. Тем не менее, вы можете просто сжать примерно из них без потерь.
Существует математическое доказательство того, что такое преобразование невозможно «всегда», оно называется принципом голубины.
http://en.wikipedia.org/wiki/Pigeonhole_principle
В принципе, если вы можете сжать любую последовательность из 120 битов в 32 бита, вы можете рекурсивно сжать всю сеть в 32 бита.
Теперь это не означает, что это никогда не возможно: вы можете сжимать несколько последовательностей по 120 бит на 32 бита, если заранее знаете некоторые свойства сжимаемой последовательности.
Например, IP-адреса могут быть частью списка, а не быть «любым» возможным значением. Индекс в списке будет стоить менее 32 бит. То же самое касается номера порта, он может быть не совсем случайным, и вы можете уменьшить выбор в список предопределенных номеров. Если возможно только 4 порта, вам потребуется всего 2 бита (вместо 16).
Для временной метки это намного сложнее. Это зависит от точности измерения. Одной из возможностей было бы использовать значение «delta» (как + N, добавленное к известной «базе»). Количество бит, которое вы можете использовать для метки времени, зависит от того, сколько бит уже использовалось предыдущими полями.
может возможно сжать его до 32 бит, но нет гарантии. Это зависит от множества ситуаций, которые вы должны учитывать.
- 1. Преобразование 12 бит int в 16 или 32 бита
- 2. Как умножить 64 бит на 32 бита в MIPS
- 3. Преобразование числа в 32 бита в python
- 4. Интерфейс общей памяти между Windows 64 бит и 32 бита
- 5. Почему int 32 бит?
- 6. 32 бит в преобразование unit64 в C++
- 7. Как бить сдвиг длиннее на 32 бита?
- 8. Сдвиг 32-битного целого числа на 32 бита
- 9. Java 32 бит и 64 бит
- 10. Установка 32-го бита для Java long type дает -1
- 11. 64-битный бит asm обрезает верхние 32 бита
- 12. Преобразование 32 бит двоичного числа в десятичное
- 13. Преобразование значения в unsigned 32 бит
- 14. Преобразование двоичного в шестнадцатеричное значение (32 бит)
- 15. Почему архитектура процессора спроектирована как 32 бита и 64 бит
- 16. 32 бит против 64 бита: Массивная выполнения Разница
- 17. Возврат 64 бит по сумме 32 бита переменной
- 18. Преобразование с плавающей запятой 32-бит в 16 бит
- 19. Преобразование 8 бит PNG в 32-бит с альфа
- 20. 64 бит на 32 бит разделения
- 21. Преобразование 32 битное число до 16 бит
- 22. Идущие 32 бита Сборочные на 64 бита SQL Server
- 23. Преобразование позиции бит в значение маски
- 24. Преобразование 64-битного PHP в 32 бит на WAMP 64bit
- 25. Преобразование с плавающей запятой IEEE 32 бит
- 26. Преобразование сборки Inline от 32 бит до 64 бит
- 27. Как отделить шестнадцатеричную строку в Java на основе бит?
- 28. Java-программа не работает на Vista 32 бита
- 29. Невозможно установить Java-на Ubuntu 14.04 32 бита
- 30. Операция бита Java на длинном счетчике и сборе бит
Если ваша цель - сохранить одну и ту же информацию от 120 до 32, это невозможно. Не могли бы вы предоставить больше информации о своей проблеме? – migu
Он называется [сжатие] (http://en.wikipedia.org/wiki/Data_compression), и это зависит от повторений ваших данных, сколько вы можете сжать его. – nfechner
На самом деле у меня есть два ips (по 32 бит каждый), два номера портов (по 16 бит каждый) и временная метка (24 бит), которые суммируются до 120 бит, и я хотел, чтобы это было представлено в 32 битах. – blackhole