배경 :읽기 필드
내가 필드의 집합을 정의하는 비트 배열/비트 맵 작업에 관심이 있어요. 특히, 나는 radiotap 헤더를 구문 분석하고 싶습니다만, 개념적으로 문제가있는 것입니다 (또는, 아마도이 모든 것이 어떻게 작동하는지에 대해 뭔가 빠져있는 것 같습니다).
비트 맵에 의해 설명 된 필드 인 radiotap 헤더는 위의 링크에서 정의됩니다.
질문 : 내 데이터를하고 u char 스트림 인 경우 비트 맵과 필드의 값을 읽는 가겠어요 그렇다면 예를 들어
(편집)? 비트 맵에서 비트 맵의 존재를 알 수있는 특정 필드에 어떻게 액세스합니까?
여기 해결책은 비트 시프 팅/마스킹과 관련이있을 것 같지만 이것이 로우 쉐어 프로그래밍에 대한 나의 첫 번째 시도이며이 문제를 해결하는 방법을 알지 못합니다.
편집 :
나는의 u_char 포인터에서 802.11 프레임에서 읽고 있어요 내 문제에 대한 현재,하지만 난 프로그래밍 방식으로 내가 알고있는 헤더 및 필드를 액세스하려면 여기에서 이동하는 위치에 붙어 먼저, 무선 태그 헤더가된다.
//defined by library I'm using
struct packet_header {
struct timeval ts; /*timestamp*/
bpf_u_int32 caplen; /*number of stored bytes*/
bpf_u_int32 length; /*total length of packet*/
}
struct packet_header hdr; //see above, basic info
u_char *packet //the data
for(int i = 0; i < hdr->length; i++){
//parse/analyse data contained in the frame/packet (1st radiotap)
packet[i] //do something with u_char here, but what exactly?
}
코드 표시 (여기)주세요! –
@ g-makulik 여기에 유용한 코드가 없습니다.이와 같은 문제에 착수하여 구조 작업 방법을 아는 것이 더 중요합니다. – amoeba
링크 된 페이지의 일부를 읽을 수도 있습니다. 파싱 라이브러리에 대한 링크뿐만 아니라 작동 원리를 설명합니다. –