Я прочитал этот код в библиотеке, которая используется для отображения растрового изображения (.bmp) на ЖК-дисплее.
Мне очень трудно понять , что происходит по следующим строкам, и как это действительно так.Поймите следующую строку
Возможно, кто-то может объяснить это мне.
uint16_t s, w, h;
uint8_t* buffer; // does get malloc'd
s = *((uint16_t*)&buffer[0]);
w = *((uint16_t*)&buffer[18]);
h = *((uint16_t*)&buffer[22]);
Я предполагаю, что это не так уж трудно для реального C программист, но я все еще учусь, так что я просто спросить :)
Насколько я понимаю, он прилипает как-то вместе две uint8_t
переменные a uint16_t
.
Заранее за вашу помощь здесь!
поэтому, если буфер [0] = 4; и буфер [1] = 2; s будет в этом случае 516? –
Это зависит от того, какой байт рассматривается как MSB. Если 0-й байт является MSB, то ваш номер равен 0x0402 = 1026. Если 1-й байт является MSB, то он равен 0x0204 = 516. –
516 или 1026, в зависимости от сущности процессора ... –