”將一個unsigned long 型的IP轉換為字串類型的IP “ 解釋

來源:互聯網
上載者:User

/*  將一個unsigned long 型的IP轉換為字串類型的IP */
#define IPTOSBUFFERS    12
char *iptos(u_long in)
{
    static char output[IPTOSBUFFERS][3*4+3+1];  //ip字串格式包含4個三位元加三個點加一個結尾符
    static short which;
    u_char *p;

    p = (u_char *)∈
    which = (which + 1 == IPTOSBUFFERS ? 0 : which + 1);
    sprintf(output[which], "%d.%d.%d.%d", p[0],p[1], p[2], p[3]);
    return output[which];
}

解釋:http://topic.csdn.net/t/20051007/20/4310836.html

如下:這是個特殊應用的轉換函式 

#define   IPTOSBUFFERS   12 //定義緩衝區大小為12個,從下面的函數知道 
//這個函數可以保留11個轉換結果 

char   *iptos(u_long   in) 

static   char   output[IPTOSBUFFERS][3*4+3+1];//輸出3點4段的字串,可以容納12次計算結果,但第一個沒有使用 
static   short   which; //   計數 
u_char   *p; 

p   =   (u_char   *)∈ //   指向長整數IP地址的字元型指標 
which   =   (which   +   1   ==   IPTOSBUFFERS   ?   0   :   which   +   1); //   每調用本函數一次,計數器加1 
sprintf(output[which],   "%d.%d.%d.%d ",   p[0],   p[1],   p[2],   p[3]);//轉換為3點4段的字串如192.168.0.1,並儲存到一個 
//output緩衝中 
return   output[which];//返回這個轉換結果。 


struct   sockaddr_in   *a; 
...... 
iptos(a-> sin_addr.s_addr); 


------- 

這個函數可以保留11次轉換結果,但結果在子函數內部,不知道編程者幹什麼用,如果不需要這些,可以很簡單改編為: 

char   *iptos(u_long   in) 

static   char   output[3*4+3+1];//輸出3點4段的字串 
u_char   *p; 

p   =   (u_char   *)∈ //   指向長整數IP地址的字元型指標 
sprintf(output,   "%d.%d.%d.%d ",   p[0],   p[1],   p[2],   p[3]); 
return   output;//返回這個轉換結果。 
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.