Мне нужно объединить биты int. Например:Конкатенирующие биты
unsigned char byte1 = 0x0F; // 00001111
unsigned char byte2 = 0xCC; // 11001100
unsigned char byte3 = 0x55; // 01010101
unsigned char byte4 = 0x04; // 00000100
После конкатенации результат должен быть:
00000100010101011100110000001111
Я пытался сделать что-л, как:
unsigned int temp = 0;
temp = temp | byte1; //the result should be 00001111 for now
temp = temp >> 8;
byte2 = byte2 << 8;
temp = temp | byte2; //the result should be 1100110000001111 for now
temp = temp >> 8;
byte3 = byte3 << 8;
temp = temp | byte3; //the result should be 010101011100110000001111 for now
temp = temp >> 8;
byte4 = byte4 << 8;
temp = temp | byte4; //the result should be 00000100010101011100110000001111
Но когда я печатаю темп, он показывает 0:
printf("%d", temp) //===> gives 0
@RNar, что вы имеете в виду? –
Извините, я неправильно прочитал ваш код –
Вы должны использовать 'unsigned int' (или' uint32_t' предпочтительно) и убедитесь, что ваши байты также являются символами unsigned char, а не plain или signed char. В противном случае вы столкнетесь с проблемами, потому что в C, '' 'и' << 'являются арифметическими операциями. –