У меня есть данные массива uint8_t [256]. Но каждый элемент представляет собой один байт. Моя шина данных имеет длину 32 бит. Так, если я хочу получить доступ к 32 бита, я:Как получить доступ к нескольким элементам массива за один раз?
DATA = Данные [I] + (данные [I + 1] <) + (данные [I + 2] < < 16) + (данные [i + 3] < < 24);
Но это означает 4 отдельных запроса на чтение в памяти по 1 байт каждый.
Как я могу получить доступ ко всем 4 байтам в виде одной транзакции?
Если 'data' имеет тип' int [256] ', для каждого слагаемого считывается не только один байт. – mafso
Вам нужно будет использовать очень нестандартный компилятор, чтобы иметь 'int data [256];' быть состоящим из одного байта. «Байты» должны быть не менее 16 бит каждый (CHAR_BIT == 16). Я думаю, что есть некоторые путаницы в предположениях, которые вы делаете. Если, как предлагает один из ваших комментариев, вы имеете в виду 'uint8_t data [256];', то один вопрос: «Собираетесь ли вы индексировать значения« i », которые не кратно 4? и еще один вопрос: «что произойдет, если вы попытаетесь получить доступ к« неправильно настроенному »адресу памяти в виде 4-байтового блока?» Вы должны знать ответы на оба перед риском коротких сокращений. –