Определение младшего и старшего байта числа типа int. Нужна подсказка
12.05.2013, 00:00
|
|
|
Частый гость
Регистрация: 07.06.2011
Сообщений: 16
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Определение младшего и старшего байта числа типа int. Нужна подсказка
Подскажите пожалуйста, в avr-gcc есть ли встроенные функции или макросы для определения младшего и старшего байтов переменных типа int.
|
|
|
|
12.05.2013, 00:20
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
char=int - младший байт
char=int››8 - старший байт
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
12.05.2013, 00:25
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.02.2008
Сообщений: 1,840
Сказал спасибо: 128
Сказали Спасибо 613 раз(а) в 430 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
Я не знаю, но в таких случаях создаю дополнительные char переменные и присваиваю первой переменной значение младшего байта, а потом сдвигаю на 8 бит исходную переменную и опять значение младшего байта (бывшего старшего) присваиваю следующей доп. переменной. Может неправильно, но работает.
долго писал.
|
|
|
|
12.05.2013, 08:15
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
Сообщение от akegor
|
char=int - младший байт
char=int››8 - старший байт
|
Слишком вольное обращение с типами данных. Не всякий компилятор такое стерпит.  Наверное, пример из CV?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
12.05.2013, 08:25
|
|
|
Гражданин KAZUS.RUN
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
2 варианта:
|
Код:
|
#define Hi(Int) (char) (Int››8)
#define Low(Int) (char) (Int)
#define LowB(x) (*((unsigned char*)* &(##x)+1))
#define HighB(x) (*((unsigned char*) &(##x)+0)) |
|
|
|
|
12.05.2013, 09:55
|
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,313
Сказал спасибо: 2,633
Сказали Спасибо 12,076 раз(а) в 6,082 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
Сообщение от ut1wpr
|
|
Слишком вольное обращение с типами данных. Не всякий компилятор такое стерпит. Наверное, пример из CV?
|
Так и Билдер не против...
Неявное преобразование разве отменили?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
15.05.2013, 23:47
|
|
|
Гражданин KAZUS.RUN
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
oleg110592, не понятен смысл выражения :
|
Цитата:
|
|
#define LowB(x) (*((unsigned char*)* &(##x)+1))
|
|
|
|
|
15.05.2013, 23:57
|
|
|
Гражданин KAZUS.RUN
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
|
Re: Определение младшего и старшего байта числа типа int. Нужна подсказка
я и сам с трудом понимаю - скопипастил где-то. Надо почитать про указатели. Может гуру подскажут. Особенно ##x непонятно. Подобную конструкцию применял для пиков - работало.
|
Код:
|
//************************************************** ******
void WRITE_INT_EEPROM(unsigned char n, unsigned int data)
{
EEPROM_WRITE(n+0, *((unsigned char*)&data + 0) );
EEPROM_WRITE(n+1, *((unsigned char*)&data + 1) ) ;
}
//************************************************** ******
unsigned int READ_INT_EEPROM(unsigned char n)
{
unsigned int data;
*((unsigned char*)&data + 0) = EEPROM_READ(n + 0);
*((unsigned char*)&data + 1) = EEPROM_READ(n + 1);
return(data);
} |
|
|
|
|
16.05.2013, 01:31
|
|
|
Прописка
Регистрация: 05.01.2013
Сообщений: 195
Сказал спасибо: 11
Сказали Спасибо 24 раз(а) в 21 сообщении(ях)
|
Re: Определение младшего и старшего байта числа типа int. Нужна подсказка
Сообщение от MaxiMuz79
|
|
не понятен смысл выражения :
|
Мало того что непонятен  , так к тому же такой способ определения старшего и младшего байта зависит от реализации самого компилятора (которая в свою очередь зависит от архитектуры процессора), ведь есть разный порядок хранения в памяти называемый: как big endian и low endian .
Последний раз редактировалось electroTrash; 16.05.2013 в 01:50.
|
|
|
|
16.05.2013, 09:23
|
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
|
Re: определение младшего и старшего байта числа типа int . Нужна подсказка.
Сообщение от MaxiMuz79
|
|
oleg110592, не понятен смысл выражения :
|
Злокопипаст. Один астериск лишний, тот, что перед амперсандом.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:09.
|
|