Прямо из биты, скажу, что я почти не знаю, что я здесь делаю - у меня большие проблемы с захватом побитовых операторов в C. В качестве упражнения на одном из моих курсов я должен скрыть число (unsigned int) в массиве больших указателей (unsigned char), содержащем числа.Я делаю это, используя srand (с ключом, чтобы потом можно было его декодировать), чтобы выбрать конкретные элементы массива, а затем взять один бит из числа, которое я должен скрыть (перебирая все биты), и изменитьнаименее значимый бит элемента массива.Выбор элементов.
Хотя у меня есть общее представление, я не могу, несмотря на поиск в Google, вычислить битовые операции.Таким образом, имея size
, который я должен кодировать в i-й серии цикла (i-th
бит размера) и выбрав случайным образом current_element
, это то, что я придумал, чтобы получить бит, а затем изменитьelement.
for (i=0; i<32; i++){
tmp = rand() % max;
current_element = array[tmp];
current_element ^= ((size >> i) & 0x01)<<7;
}
Чтобы декодировать, я написал бы это аналогично (где размер стирается без знака без знака, в который я пытаюсь записать декодированное число):
for (i=0; i<32; i++){
tmp = rand() % max;
current_element = array[tmp];
size = size ^ ((current_pixel.blue<<0)<<7);
}
Эти двав различных функциях и srand()
заранее добавляется в каждую из них.
Но они явно не работают, и я даже не знаю, какая из них (я могу только проверить, правильно ли он декодирован).По правде говоря, они в основном скопированы с других вещей, которые я нашел в Интернете, поскольку до сих пор работа с отдельными битами ускользает от меня.Так что я был бы благодарен за какой-то совет о том, что здесь не так (и я знаю, что, возможно, здесь все не так, и все это бред, но я уже давно пытаюсь исправить это безрезультатно).