Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Преобразование типов WinAVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Monet
Добрый день, уважаемые коллеги.

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

Заранее всем спасибо.
ataradov
int16_t num;
unsigned char arr[2];

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

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

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

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

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

*((int16_t *)arr) = num;



Большое спасибо!!!
dxp
Цитата(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).
Ermol
А подскажите пожалуйста как сделать в обратном порядке?
low = num & 0xff;
hi = (num >> 8) & 0xff;
если есть low и hi как получить 16-битное num ?
sigmaN
16bit_num = (hi << 8) | low;
Ermol
спасибо! оперативно =)
alekseykoj
А еще вот такой.
struct Struct_IntToByte {
unsigned char m_ByteLo;
unsigned char m_ByteHi;
}

int16_t num;
struct Struct_IntToByte* h_IntToByte;

// Получение доступа
h_IntToByte = (struct Struct_IntToByte*)&num;

// Использование
h_IntToByte->m_ByteLo;
h_IntToByte->m_ByteHi;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.