ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
73069
slog2 (30.10.2006 22:53, просмотров: 1178)
Толи лыжи не едут, то ли я... Трахаюсь с IAR 4.12 для AVR. Вообщем задачка простая, есть 3 байта unsigned char, b2, b1, b0. Надо упаковать их в один signed long. Так что бит 3 байта b2 это старший бит long, ну и дальше по порядку все байты в сторону уменьшения. Как правильные программисты это делают? Сдвигать байты оператором << больше чем на 8 бит не получается. Пробую так: b_long = (b2*0x1000000)|(b1*0x10000)|(b0*0x100); не работает, между байтами 2 и 1 в b_long возникает перенос в зависимости от знака байта b0. Пробую так: unsigned int b32, b10; b32 =(b2<<8)|b1; b10 =(b0<<8); b_long =(b32*0x10000)|b10; все работает. Не понятно почему первый пример не работает и как вообще это сделать красиво.