Is char c2=i1<<8>>24;
действительный синтаксис C? (Где i1
is и unsigned integer) Кроме того, будет ли он давать результат сдвига i1
8 бит влево и 24 бита вправо соответственно? Я распаковываю char, ранее сохраненный в i1
, вместе с тремя другими символами. Код ниже:Побитовый сдвиг влево и вправо в том же самом заявлении
unsigned char b3 = 202;
unsigned char b2 = 254;
unsigned char b1 = 186;
unsigned char b0 = 190;
...
unsigned int i1=202;
i1=i1<<8;
i1=i1+254;
i1=i1<<8;
i1=i1+186;
i1=i1<<8;
i1=i1+190;
...
char c1=i1>>24;
char c2=i1<<8>>24;
Ваше редактирование было полезно! можете ли вы опубликовать код, который объединяет 4 'char' в' int'? Тонкая ошибка может скрываться там. – chqrlie
@chqrlie исправлено по запросу. – pmaurais
Джон Боллинджер ударил быка! Вы должны определенно объявить 'c1',' c2' и т. Д. Как 'unsigned char'. Вы управляете байтовыми значениями, превышающими 127, вы просите проблему с ними обращаться с типом 'char', который может быть подписан по умолчанию. – chqrlie