Я пытаюсь сделать xor между байтами (или октетами) пикселя из файла .bmp
и 3 байтами из случайно сгенерированного целого числа , исключая самое старшее .Я вроде понимаю, что самый значимый байт зависит от порядка байтов и, как правило, это первый передаваемый в предложении.В массиве pix
я сохранил каждый октет каждого пикселя.w
и h
равны 800
и являются размерами .bmp
картинки (800 x 800), а R
- массив случайных чисел.
Я пытался сделатьследующие операции, но это даст мне ошибка сегментации после некоторых приращений.
unsigned char *pix = malloc((3 * w * h) * sizeof(unsigned char));
for(int i = 0; i < (3 * w * h); i++)
fread(&pix[i], sizeof(char), 1, fin);
uint32_t *R = malloc((3 * ((2 * w * h) - 1)) * sizeof(uint32_t));
unsigned char bytes[4];
for(k = 0; k < (3 * w * h); k = k + 3)
{
bytes[0] = (R[3 * w * h + k] >> 24) & 0xFF;
bytes[1] = (R[3 * w * h + k] >> 16) & 0xFF;
bytes[2] = (R[3 * w * h + k] >> 8) & 0xFF;
bytes[3] = R[3 * w * h + k] & 0xFF;
ch[k] = bytes[1] ^ pix[k];
ch[k + 1] = bytes[2] ^ pix[k + 1];
ch[k + 2] = bytes[3] ^ pix[k + 2]
}