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

 
 
> Преобразование типов WinAVR, Преобразование типов int16_t
Monet
сообщение Mar 30 2010, 18:49
Сообщение #1





Группа: Участник
Сообщений: 3
Регистрация: 14-03-10
Из: Донецк
Пользователь №: 55 960



Добрый день, уважаемые коллеги.

Возникла задача следующего характера: есть число типа int16_t, в WinAVR необходимо создать массив из двух элементов unsigned char, первый элемент - младший байт числа int16_t, а второй - соответственно старший байт.

Заранее всем спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Mar 31 2010, 03:44
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Monet @ Mar 31 2010, 01:49) *
Возникла задача следующего характера: есть число типа int16_t, в WinAVR необходимо создать массив из двух элементов unsigned char, первый элемент - младший байт числа int16_t, а второй - соответственно старший байт.

Еще вариант:
Код
union
{
     int16_t value;
     int8_t array[2];
} slon;

slon.value = 12345;

int8_t low  = slon.array[0];
int8_t high = slon.array[1];



Цитата(Taradov Alexander @ Mar 31 2010, 02:04) *
int16_t num;
unsigned char arr[2];

arr[0] = num & 0xff;
arr[1] = (num >> 8) & 0xff;

Или не портабельный вариант:

*((int16_t *)arr) = num;

Первый вариант тоже не полностью портабельный (в случае влияния endian).


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 19:13
Рейтинг@Mail.ru


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