Я пишу некоторый C-код для разбора кадров IEEE 802.11, но я застрял, пытаясь создать новую переменную, длина которой зависит от размера самого кадра.
Вот код, который у меня сейчас есть:
int frame_body_len = pkt_hdr->len - radio_hdr->len - wifi_hdr_len - 4;
u_char *frame_body = (u_char *) (packet + radio_hdr->len + wifi_hdr_len);
По сути, кадр состоит из заголовка, тела и контрольной суммы в конце.Я могу рассчитать длину тела кадра, взяв длину пакета и вычтя длину двух заголовков, которые появляются перед ним (radio_hdr->len
и wifi_hdr_len
соответственно), плюс 4 байта в конце контрольной суммы.
Однако, как я могу создать переменную frame_body
без конечной контрольной суммы?Прямо сейчас я инициализирую его содержимым пакета, начинающимся с позиции после двух заголовков, но есть ли способ начать с этой позиции и завершить 4 байта до конца packet
?packet
- это указатель на u_char, если он помогает.
Я новый программист на C, поэтому любые советы по поводу моего кода, которые вы можете дать мне, будут очень благодарны.Спасибо!