Виталий писал(а):
- Код: Выделить всё • Развернуть
int my_int = 0xF00F;
char my_int_h = (char) (my_int >> 8);
char my_int_l = (char) (my_int);
putchar(my_int_h); //-> F0h
putchar(my_int_l); //-> 0Fh
//И после того ка приняли два байта подряд восстанавливаем int.
int input = my_int_l | (my_int_h << 8);
Всё здорово но последняя строчка не работает ))) (на практике)
с (my_int_h<<8) проблем нету все отлично, проблемы с my_int_l.
При получении на ПК переменную my_int_l она размером у нас один байт (т.к. передача происходит побайтовая), но при выполнении последней операции он преобразует ее в двубайтовый размер и в старшем байте одни еденицы.
Рабочая версия последней строчки:
- Код: Выделить всё • Развернуть
int input=(my_int_l & 255)|( my_int_h <<8);