реклама на сайте
подробности

 
 
> Как разбить 2 байта по байту))
Xenom0rph
сообщение Oct 17 2008, 11:24
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646



Вообщем задача такая, у меня есть число типа unsigned int;
Мне надо записать его в ячейку eeprom. Ячейка это один байт, значит для хранения типа unsigned int требуется две ячейки. Так вот как мне разбить это число по байту и записать в ячейки, а когда мне потребуется это число я его обратно склеил?
Знаю, что как то делается это просто, там страший и младший разряд... и т.д. но вот что то немогу никак вьехать в эти разряды.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Oct 17 2008, 11:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Например:
unsigned int A;
unsigned char b, c;
b= A&0xFF;
c= A>>8;
A=(c<<8)|b;

или через union...
Go to the top of the page
 
+Quote Post
lks
сообщение Oct 19 2008, 13:29
Сообщение #3


Местный
***

Группа: Новичок
Сообщений: 493
Регистрация: 18-06-06
Пользователь №: 18 143



Цитата(Палыч @ Oct 17 2008, 15:29) *
или через union...


Ну да.

union LOG { unsigned char aa[2], unsigned int dd; }ff;
unsigned char bb, сс;
unsigned int big;

dd.ff = big;
bb = ff.aa[0];
cc = ff.aa[1];

Вроде бы так должно быть? smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 19 2008, 15:16
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(lks @ Oct 19 2008, 15:29) *
Вроде бы так должно быть? smile.gif

Отнюдь sad.gif
Цитата
union LOG { unsigned char aa[2], unsigned int dd; }ff;

int штука коварная и непереносимая в некоторых случаях. В Вашем случае 'unsigned short'
И зачем делать union c обезличенным массивом sad.gif
union my_short {
unsigned short dd;
unsigned char lo;
unsigned char hi;
} ff;
И вообще, если не описывать union каждый раз, то
typedef union my_short {
unsigned short dd;
unsigned char lo;
unsigned char hi;
} my_short_t;

my_short_t ff;

Цитата
unsigned int big;

unsigned short big;
Цитата
dd.ff = big;

ff.dd = big;
С точностью до наоборот. И вообще промежуточная переменная big просто лишняя - надо сразу использовать ff.dd
Цитата
bb = ff.aa[0];
cc = ff.aa[1];

bb = ff.lo;
cc = ff.hi;


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 20 2008, 07:08
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(zltigo @ Oct 19 2008, 18:16) *
union my_short {
unsigned short dd;
unsigned char lo;
unsigned char hi;
} ff;
Код
union   my_short {
    unsigned short dd;
    struct
    {
        unsigned char lo;
        unsigned char hi;
    };
} ff;


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Xenom0rph   Как разбить 2 байта по байту))   Oct 17 2008, 11:24
|- - Xenom0rph   Цитата(Палыч @ Oct 17 2008, 15:29) Наприм...   Oct 17 2008, 11:59
||- - Палыч   Цитата(Xenom0rph @ Oct 17 2008, 14:59) У ...   Oct 17 2008, 12:07
||- - Xenom0rph   Цитата(Палыч @ Oct 17 2008, 16:07) Ошибоч...   Oct 17 2008, 12:54
|- - zltigo   Цитата(Сергей Борщ @ Oct 20 2008, 09:08) ...   Oct 20 2008, 08:04
- - Огурцов   На чем пишем ? В WinAVR/GCC можно сделать так #d...   Oct 17 2008, 12:02
- - Demeny   Цитата(Xenom0rph @ Oct 17 2008, 15:24) Во...   Oct 17 2008, 12:09
|- - Палыч   Цитата(Demeny @ Oct 17 2008, 15:09) Не ну...   Oct 17 2008, 12:21
- - DiMomite   В CVAVR надо писать так: eeprom unsigned char a[10...   Oct 17 2008, 22:52
|- - Xenom0rph   Цитата(DiMomite @ Oct 18 2008, 02:52) В C...   Oct 18 2008, 10:25
- - smalcom   вроде небыло варианта unsigned int uiA = 0xABCD u...   Oct 19 2008, 02:00
|- - zltigo   Цитата(smalcom @ Oct 19 2008, 04:00) врод...   Oct 19 2008, 09:42
- - smalcom   ЦитатаОчень жаль, что теперь "eсть" sad....   Oct 19 2008, 11:49
|- - zltigo   Цитата(smalcom @ Oct 19 2008, 13:49) ...и...   Oct 19 2008, 13:07
- - g-gabber   __asm{ mov ax,[value] movzx ecx,al movzx edx,ah }   Oct 22 2008, 08:07
|- - zltigo   Цитата(g-gabber @ Oct 22 2008, 10:07...   Oct 22 2008, 08:25
|- - g-gabber   Цитата(zltigo @ Oct 22 2008, 10:25) К чем...   Oct 22 2008, 08:49
- - zltigo   Цитата(g-gabber @ Oct 22 2008, 10:49...   Oct 22 2008, 18:18
- - g-gabber   Цитата(zltigo @ Oct 22 2008, 20:18) 1) в ...   Oct 23 2008, 12:20
- - zltigo   Цитата(g-gabber @ Oct 23 2008, 14:20...   Oct 23 2008, 20:31
- - g-gabber   Цитата(zltigo @ Oct 23 2008, 22:31) Совер...   Oct 23 2008, 21:30


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 11:06
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016