Есть 2^{16} = 65,536 пути, которые выбирают пару 8-битных байтов.
Однако результатом вашей процедуры является только один 8-разрядный байт, который может иметь место в 2^8 = 256 различных вариаций.
Таким образом, вы можете использовать этот один байт в качестве входных данных для какой-либо процедуры распаковки, но поскольку имеется только 256 различных входов, процедура не может выдавать более 256 различных результатов, поэтому вы можете получить не более 256 из 65 536 возможных пары, другие пары недоступны, потому что у вас заканчиваются имена для них, так сказать.
Это делает процедуру непрактичной, если происходит более 256 различных пар байтов ввода.
(см комментарии ниже для более подробной информации)
сжатия будет только практичным, если существуют ограничения на входных данных. Например. если только пары p1 = (42,37) и p2 = (127,255) могут возникать как возможный вход, вы можете сжимать их как 01 и и 02.
Вы хотите сжать любую комбинацию из 2 байтов до одного байта? – Phylogenesis
@ Филогенез: теперь не слишком поспешное отклонение этого ... это действительно возможно :-) Никто не сказал, что ключ должен быть случайным или свободно выбранным. 5 байтов (1 байт данных и 4 байта) достаточны для восстановления 2 байта. Секретные алгоритмы совместного доступа к спасению! Это на самом деле удивительное «шифрование», поскольку без информации в ключе невозможно восстановить информацию, независимо от того, сколько у вас вычислительной мощности. – Damon