1. 程式人生 > >C語言快速實現整數IP和字串IP之間的轉換

C語言快速實現整數IP和字串IP之間的轉換

IP一般由32位整陣列成,按每8位劃分為4部分:255.255.255.255 該顯示方式為字串形式,而IP一般是以整數形式顯示。下面通過位移和求餘取整操作快速實現整數IP轉換為字串IP:

整數IP地址 unsigned int IP_Addr = 1713350848 轉化為二進位制為:01100110-00011111-10101000-11000000 根據8位劃分得到結果為102-31-168-192,由於網路位元組倒序的問題,實際IP為192.168.31.102

下面為整數IP和字串IP之間轉換的程式碼

    /* 待轉化的整數IP */
    unsigned  int IP_Addr = 1713350848;
/* 提取IP:位移操作 */ int addr_1 = IP_Addr >> 24; // 提取第一部分IP地址 IP_Addr = IP_Addr << 8; int addr_2 = IP_Addr >> 24; // 提取第二部分IP地址 IP_Addr = IP_Addr << 8; int addr_3 = IP_Addr >> 24; // 提取第三部分IP地址 IP_Addr = IP_Addr << 8; int
addr_4 = IP_Addr >> 24; // 提取第四部分IP地址 /* 提取IP:求餘取整 */ int addr_1 = IP_Addr % 256; // 提取第一部分IP地址 IP_Addr = IP_Addr / 256; int addr_2 = IP_Addr % 256; // 提取第一部分IP地址 IP_Addr = IP_Addr / 256; int addr_3 = IP_Addr % 256; // 提取第一部分IP地址 IP_Addr = IP_Addr /
256; int addr_4 = IP_Addr % 256; // 提取第一部分IP地址 /* 列印IP地址:結果為"192.168.31.102" */ printf("IP地址為:%d.%d.%d.%d", addr_4, addr_3, addr_2, addr_1); /********************** 字串IP轉整數就比較簡單了 ***************************/ /* 待轉換字串IP */ char * IP_Addr = "192.168.31.102"; /* 提取4部分整數:提取方法很多這裡省略 */ int addr_1 = 192; int addr_2 = 168; int addr_3 = 31; int addr_4 = 102; /* 根據網路位元組倒序計算IP整數 */ unsigned int IP_Int = addr_1 + (addr_2 * 256) + (addr_3 * 256 * 256) + (addr_4 * 256 * 256 *256);

相關推薦

C語言快速實現整數IP字串IP之間轉換

IP一般由32位整陣列成,按每8位劃分為4部分:255.255.255.255 該顯示方式為字串形式,而IP一般是以整數形式顯示。下面通過位移和求餘取整操作快速實現整數IP轉換為字串IP: 整數I

計算機專業,畢業答辯專案 自寫資訊管理系統——利用C語言快速實現

  feature.cpp #include"head.h"      /********************獲取檔名;讀取內容;給num,fp,head,flieopenname賦值;建立連結串列**********************

C語言實現Strcmp()函式Memcpy()函式

C語言:實現Strcmp()函式和Memcpy()函式 我是一名在校大學生,初次寫部落格,希望各位大佬不喜勿噴,這個小程式,僅供參考,希望對大家有所幫助。 分析題意: 1.Strcmp()函式,當s1<s2時,返回為負數;當s1==s2時,返回值=0;當s1>s2時,

C語言實現一個函式翻轉字串

實現一個函式翻轉字串 思路:->實現翻轉 1.翻轉即前後交換 2.對於字串前後交換直到中間一個字元終止迴圈 3.令(start++)<(end–)迴圈條件不滿足退出 #incl

C語言實現兩個整數mn的二進位制序列中有多少不同的位

新手學程式設計,大佬寫的太高深,看看本人小白寫的,一起學習一起交流 #include <stdio.h> int main() { int m = 0; int n = 0; int i = 0; int count = 0; scanf("%d%d", &

C語言:呼叫子函式,實現選擇排序字串連線

2018年11月14日 19:57:26 return 微明 閱讀數:1 個人分類: C語言

C語言------如何實現字串陣列整形陣列在終端上任意輸

我是新手, 學習C語言過程中,練習程式設計時常會遇到輸入任意字串(不越界的情況下任意輸入),或者是輸入任意長度的整形陣列,下面就是我的一些關於任意字串和陣列輸入程式碼的整理. 1. 字串      

C語言如何實現C++中對象屬性方法

討論 button c語言 對象 ron oid 技術分享 數據 而在   在C++中,我們常見到用類定義一個對象,這個對象可以有他自己的屬性(數據)和方法(函數),而在C語言的正常語法中,是禁止在結構體中定義函數的。   在一個關於觸摸屏的驅動程序中發現,用C語言的也可以

資料結構之 伸展樹個人筆記 伸展樹(一)之 圖文解析 C語言實現

閱讀了skywang的伸展樹的講解,覺得講的很不錯,再次也推薦大家無論是新手還是老手都可以去閱讀下。 ----------------------------------------------------------------------------------------- 伸展樹(一)之 圖文

C語言 指標實現字串連線

C語言 指標實現字串連線 #include <stdio.h> #include <string.h> int main() { char s1[100], s2[100], s3[100]; char *p1=NULL; char *p2=NULL; char

GSM A5/1演算法C語言程式碼實現分析

介紹 全球超過200個國家和地區超過10億人正在使用GSM電話。對中國使用者來說,GSM就是移動和聯通的2g模式。 在1982年A5首次提出時,人們認為A5 / 1金鑰長度要128位,但最終確定的結果是64位金鑰(政府可以使用暴力破解算出)。很可能是政府的壓力迫使金鑰位數縮

Java併發(十八):阻塞佇列BlockingQueue BlockingQueue(阻塞佇列)詳解 二叉堆(一)之 圖文解析 C語言實現 多執行緒程式設計:阻塞、併發佇列的使用總結 Java併發程式設計:阻塞佇列 java阻塞佇列 BlockingQueue(阻塞佇列)詳解

阻塞佇列(BlockingQueue)是一個支援兩個附加操作的佇列。 這兩個附加的操作是:在佇列為空時,獲取元素的執行緒會等待佇列變為非空。當佇列滿時,儲存元素的執行緒會等待佇列可用。 阻塞佇列常用於生產者和消費者的場景,生產者是往佇列裡新增元素的執行緒,消費者是從佇列裡拿元素的執行緒。阻塞佇列就是生產者

哈夫曼樹詳細講解(帶例題C語言程式碼實現——全註釋)

** 哈夫曼樹詳細講解(帶例題和C語言程式碼實現——全註釋) ** 定義 哈夫曼樹又稱最優二叉樹,是一種帶權路徑長度最短的二叉樹。所謂樹的帶權路徑長度,就是樹中所有的葉結點的權值乘上其到根結點的 路徑長度(若根結點為0層,葉結點到根結點的路徑長度為葉結點

計算位數最高達300位的兩個非負整數的乘積,C語言程式設計實現

-------世界太蕪雜,我幫你整理---- -------C語言大數相乘運算---------- 今天我們要程式設計實現的是兩個超長整型資料進行相乘,並輸出結果 比如: 2134897427972647678 * 3497892374 我們先來看看執行效果

靜態連結串列插入刪除操作詳解(C語言程式碼實現

本節主要講解靜態連結串列的插入和刪除操作,有關靜態連結串列的詳細講解請閱讀《靜態連結串列及C語言實現》一文。 在講解靜態連結串列的插入和刪除操作之前,我們假設有如下的靜態連結串列: 圖中,array[0] 用作備用連結串列的頭結點,array[1] 用作存放資料的連結串列的頭結點,array[0]

c語言實現超連結(多檔案程式的編譯連線)

一個實用價值的c語言應用程式往往較大,需要劃分成不同的檔案,那麼如何把這些檔案編譯,連線成一個統一的可執行的檔案並執行呢?   c語言提供了編譯預處理“#include“檔名””來實現‘檔案包含”的操作,其特點是一個原始檔可以將另外一個原始檔的全部包含進來。預處理程式將#i

C語言求一個整數的二進位制形式表示中1的個數,用函式實現

1:我們知道,整數在計算機中是以補碼的形式儲存的。如果給定一個十進位制正整數是          如何轉換成二進位制數的呢?用的是除以2取餘數的方法。若餘數為1,則1的個數加          1;然後用商再除以2取餘數,直到商為0;但是負數除2的餘數為負數。因此,可以 

C語言將十進位制整數輸出為八進位制十六進位制

方法一: 直接使用控制字串 %o 八進位制 %x %X 十六進位制 方法二: 函式 char *itoa(int value, char *string, int radix)    返回值型別

C語言模擬實現strncpy、strncpy、strncat、strstrstrrstr函式實現

以下是我用C語言模擬實現的部分字串函式: 1、strncpy函式的實現 #include<stdio.h> #include<assert.h> #include<

單鏈表插入刪除結點c語言實現

插入節點的方法比較簡單,只需宣告一個索引的指標p和宣告一個記錄p下一個指標的next。實現過程就是,申請記憶體的指標pNew.讓p->next = pNew, pNew->next = next. 如此一來就實現了往p後面插入一個數據。 /* ========