как читать пока в массиве - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть буфер

uint8_t c[64] ={ 0xFF, 0xAA, 0x00} ;

Я хочу выполнить операцию, основанную на значении байта

for(uint8_t i=0; i<size;i++)
{
    if(0XAA == ???)
    {
    }
}

Может кто-нибудь помочь мне, например, как читать его побайтно ивыполнить вышеуказанное.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Если ваши элементы эквивалентны uint8, то предположительно каждый элемент равен байт .

for(uint8_t i = 0; i < size; ++i)
{
    if(0XAA == c[i])
    {
        foo();
    }
}

После того, как вы прочитали все 64 байтаваш буфер c обработан, и вы можете получить новый, очистить старый и т. д. Вы можете напрямую сравнить элементы массива с восьмеричными значениями, потому что для компилятора число - это число, а 0xAA - то же самое, что и170. Вам не нужно относиться к этому по-другому только потому, что это в восьмеричной записи.

0 голосов
/ 25 сентября 2019

Я не уверен, что получил ваш вопрос.Кажется, у вас есть буфер, состоящий из 64 элементов, и вы хотите получить доступ к каждому из них в цикле.Вы можете адресовать такой буфер следующим образом: c [0], c [1], c [2] ..... c [63]

Например:

for(uint8_t index = 0; index < 64; index++)  {
    if(c[index] == 0xFF) DoThis
    else if(c[index] == 0xAA) DoThat
    else if(c[index] == 0x00) DoWhatElse
    .... }

Youтакже можно использовать регистр переключателя вместо if.Взгляните: https://www.tutorialspoint.com/cprogramming/switch_statement_in_c.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...