Страница 1 из 1

Чтение структуры побайтно.

Добавлено: 23 янв 2017, 13:24
БлудныйКот
Добрый день!

Такой вопрос. Есть структура состоящая в основном из интов.

struct Data{
uint8_t A = 0x1A;
uint16_t B = 0xFF2B;
uint8_t С = 0x4D;
}Data;


Пытаюсь побайтно переписать данные из этой структуры в массив uint8_t array[3]. Есть ли способы это сделать через указатели? Интересует именно чтение полей структуры через указатели.

Зараннее спасибо!

Re: Чтение структуры побайтно.

Добавлено: 23 янв 2017, 13:30
БлудныйКот
Пытаюсь прочитать поля структуры через указатель.

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Serial.print("Sctructure Data : " );
for(int i = 0; i < 3; i++)
{
uint8_t a = *( (byte *)(&Data+i) );
Serial.print(a);
Serial.println(" ");
}
}

В порте получаю:
Sctructure Data : 1 20 0


Пытался сделать по аналогии с вашим туториалом, но что то не получается.
http://mypractic.ru/urok-15-ukazateli-v ... bajty.html

Re: Чтение структуры побайтно.

Добавлено: 23 янв 2017, 14:08
Эдуард
При математических операциях над указателями учитывается размер типа данных указателя. Поэтому, если необходимо прочитать в байтах, то i надо прибавлять к указателю преобразованному в байты

uint8_t a = *( ((byte *)(&Data)) + i);

Re: Чтение структуры побайтно.

Добавлено: 23 янв 2017, 14:10
БлудныйКот
Спасибо) Работает))