我得到了源端口号。代码中所示的for循环中的十六进制数no。在本例中,源端口为01 bb。我想把它显示为443,也就是十进制如何表示...
printf("\nSource Port Number: ");
a = packet[34];
b = packet[35];
char num[20];
int num3;
strcpy (num, a);
strcat (num, b);
printf("Hexadecimal string %s\n", num);
sscanf(num,"%x", &num3);
printf("Decimal number %d\n", num3);34和35号显示源端口号的数据包。我已经在wireshark上看到了…我得到的答案是01 bb,但我想得到十进制的结果…
发布于 2019-05-28 02:33:52
您尝试使用sscanf将由libpcap捕获的数据字节'0x01 0xbb‘组成的端口号转换为整数值。这将不起作用,因为sscanf期望端口号为字符串"01bb“。如果你检查sscanf的返回值,我希望它是'0‘,这意味着没有发生任何事情,因为预期的数据格式不匹配。我认为您可以通过使用逐位或和移位来组合数据字节'0x01‘和'0xbb’来设置端口号(重要:字节顺序)。
https://stackoverflow.com/questions/56325392
复制相似问题