У меня есть неподписанный символ buf:
IP находится в позиции 197, а порт в позиции 205.
Как я могу получить правильный IP и PORT от этого неподписанного символа 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