Ответ: Можно, в некотором роде.
Здравствуйте, из своего опыта я нашел способ сделать это просто. Для задачи вам нужно определить себя и массив символов (он должен быть, например, 1 байт, он может быть больше). После этого вы должны определить функции для доступа к определенному биту из любого элемента. Например, как написать выражение для получения значения 3-го бита из char в C++.
*/*position is [1,..,n], and bytes
are in little endian and index from 0`enter code here`*/
int bit_at(int position, unsigned char byte)
{
return (byte & (1 << (position - 1)));
}*
Теперь вы можете видеть массив байтов как [b1,...,bn]
Теперь то, что у нас на самом деле есть в памяти, это 8 * n битов памяти. Мы можем попытаться визуализировать это так. ПРИМЕЧАНИЕ: массивы обнуляются! |0000 0000|0000 0000|...|0000 0000|
Теперь из этого вы или кто-то другой может понять, как манипулировать им, чтобы получить определенный бит из этого массива. Конечно будут какие то конверты но это не такая уж проблема. В конце концов, для кодировки, которую вы предоставляете, то есть: a: 0 d: 100 c: 101 b: 11
Мы можем закодировать сообщение abcd и создать массив, содержащий биты сообщения, используя элементы массива как массивы для битов, например:
|0111 0110|0000 0000|
Вы можете записать это в память, и у вас будет избыток не более 7 бит. Это простой пример, но его можно расширить до гораздо большего. Я надеюсь, что это дало некоторые ответы на ваш вопрос.
person
Goshaka_
schedule
17.12.2020
'\0'
в строках, и закодировать его, как и другие символы. - person Stephan Lechner   schedule 21.12.2017