簡體   English   中英

使用strtol()將IP地址從十六進制轉換為dec

[英]Convert IP address from hex to dec using strtol()

我將IP地址從框架添加到結構:

unsigned char destination_address[4];

在我的主程序中,我加載了一個結構體:

struct ipv4 naglowek_ipv4;
upakuj_ipv4(bufor_eth_ipv4, &naglowek_ipv4);

並嘗試以“人類可讀的格式”顯示它:

printf("Destination Adress: %ld.%ld.%ld.%ld\n",
    strtol(naglowek_ipv4.destination_address[0],NULL,16),
    strtol(naglowek_ipv4.destination_address[1],NULL,16),
    strtol(naglowek_ipv4.destination_address[2],NULL,16),
    strtol(naglowek_ipv4.destination_address[3]));

這沒有顯示我認為的方式。 有誰知道為什么嗎?

destination_address不是字符串,而只是四個字節的數組。 因此,簡化您的通話至:

printf("Destination Adress: %d.%d.%d.%d\n",
        naglowek_ipv4.destination_address[0],
        naglowek_ipv4.destination_address[1],
        naglowek_ipv4.destination_address[2],
        naglowek_ipv4.destination_address[3]);

您會注意到是否包含了strtol的聲明(以及您沒有將足夠的參數傳遞給上一次調用的事實):

#include <stdlib.h> /* provides strtol() function */

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM