Как узнать номер порта источника.в десятичной форме - PullRequest
0 голосов
/ 27 мая 2019

Я получил исходный номер порта в шестнадцатеричном десятичном формате от цикла for, как показано в коде. В этом случае исходный порт равен 01 бб. Я хочу показать его как 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 бб в качестве ответа, но я хочу получить его в десятичном виде ...

1 Ответ

0 голосов
/ 27 мая 2019

Вы пытаетесь преобразовать номер порта, который состоит из байтов данных '0x01 0xbb', захваченных libpcap, в целочисленное значение, используя sscanf.Это не сработает, потому что sscanf ожидает номер порта в виде строки символов "01bb".Если вы проверите возвращаемое значение sscanf, я бы ожидал, что это '0', что означает, что ничего не произошло из-за ожидаемого несоответствия формата данных.Я думаю, что вы могли бы установить номер порта, просто комбинируя байты данных «0x01» и «0xbb», используя побитовый или и Shift (Важно: порядок байтов).

...