我有unsigned char buf:
IP位于第197位,端口位于第205位。 如何从这个unsigned char buf获得正确的IP和PORT?
我尝试了一些数字转换,但没有运气:(
任何帮助或提示都表示赞赏。
答案 0 :(得分:1)
我假设,IP从第197位开始,它占据阵列中的4个位置(每个八分圆1个),端口占1个位置。在C / C ++中,应使用索引196访问第197位。因此,您可以通过以下方式访问IP和端口地址的4个八分位数,
short int octants[] ={buf[196],buf[197],buf[198],buf[199]} ;
short int portId = buf[204] ;
答案 1 :(得分:0)
好的,我找到了解决方案,感谢正确方向踢的人:)
输出正确结果的代码是:
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