У меня есть unsigned char buf:
IP находится в позиции 197, а порт находится в позиции 205. Как я могу получить правильный IP и PORT из этого unsigned char buf?
Я попробовал конвертировать некоторые цифры, но не повезло :(
Любая помощь или намек оцениваются.
Я предполагаю, что IP начинается на 197-й позиции и занимает 4 места в массиве (1 для каждого октананта) и 1 место для порта. В C/C++ 197-ю позицию следует получить с индексом 196. Таким образом, вы можете получить доступ к 4 октанам IP-адреса и адреса порта следующим образом,
short int octants[] ={buf[196],buf[197],buf[198],buf[199]} ;
short int portId = buf[204] ;
Хорошо, я нашел решение, спасибо за удар в правильном направлении, ребята :)
Код, который выводит правильный результат:
printf("IP: %d.%d.%d.%d", buf[197], buf[198], buf[199], buf[200]);
int port = 0; // Start with zero
port |= buf[204] & 0xFF; // Assign first byte to port using bitwise or.
port <<= 8; // Shift the bits left by 8 (so the byte from before is on the correct position)
port |= buf[205] & 0xFF;
printf(" Port: %d", port);
И результат: IP: 8.8.8.8 Порт: 53