Как я могу получить IP и ПОРТ из полезной нагрузки без знака char buf?

У меня есть неподписанный символ buf:

IP находится в позиции 197, а порт в позиции 205.
Как я могу получить правильный IP и PORT от этого неподписанного символа buf?

Я пытался преобразовать некоторые числа, но безуспешно 🙁

Любая помощь или подсказка приветствуется.

0

Решение

Я предполагаю, что 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] ;
1

Другие решения

Хорошо, я нашел решение, спасибо за удар в правильном направлении, ребята 🙂

Код, который выводит правильный результат:

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

0

По вопросам рекламы [email protected]