演算法練習Ip地址與整數的互相轉換ipstrToint
int ipstr2int(const char *ip, unsigned int *ipvalue) { if (ip == NULL || ipvalue==NULL) return -1; unsigned int result = 0; int tmp = 0; int shift = 24; const char *pEnd = ip; const char *pStart = ip; while(*pEnd != '\0') { //到地址符裡的’.’ while(*pEnd != '.' && *pEnd != '\0') pEnd++; tmp = 0; //計算每個’.’之間的數值 while(pStart < pEnd) { tmp = tmp * 10 + (*pStart - '0'); pStart++; } if(tmp<0 || tmp >255) { return -1; } //將計算好的數值分別左移24位,16位,8位,0位 result += (tmp << shift); shift -= 8; if (*pEnd == '\0') break; pStart = pEnd + 1; pEnd++; } *ipvalue = result; return 1; }
int ip2str(unsigned int ip, char *buf, size_t len) { if(buf == NULL || len<16) { return -1; } size_t length = sizeof(ip);//32位ip地址的位元組數 unsigned char *p = (unsigned char *)&ip+sizeof(ip)-1;//指 向ip地址最高位元組 char *p1 = buf; while(length) { unsigned char tmp = *p; char *pstart= p1; do { *p1++ = tmp%10 +'0'; tmp /= 10; }while(tmp); //逆置 char *pend = p1-1; for(;pstart<pend;pstart++,pend--) { char ch = *pstart; *pstart = *pend; *pend=ch; } if(length>1) *p1++ = '.'; length--; //迴圈條件轉換 p--; } *p1 ='\0'; return 1; }
下面是我的答案:Ip轉換到整數
int Ip_to_Int(char *Ipstr) { if(NULL == Ipstr || '\0' == *Ipstr) return 0; char *pEntry = 0; char *pEnd = 0; int temp = 0;//用於記錄轉換後數字 int Resule = 0; int count = 0;//用於記錄.的個數 根據這個來移位 int len = 0;//用於記錄兩個指標間的差 pEntry = pEnd = Ipstr; if(*pEntry >'9' || *pEntry < '0')//如果第一個字元不是數字就返回了 return 0; for (int i = 0; *pEnd != '\0'; i++) { if(*pEntry >'9' || *pEntry <'0')//不是這個範圍就說明不是數字 return 0; if(*pEnd == '.') { len = pEnd - pEntry; for (int k = 0; k <len; k++) { temp = temp * 10 + (*pEntry - '0'); pEntry ++; } if(temp >255)//大於255說明不是IP return 0; Resule |= temp<<(count*8); count ++; //printf("Resule :0x%p\n",Resule); temp = 0; pEnd ++;//pEnd指向. 應該指向下一個有效數字 pEntry = pEnd; } pEnd ++; } //最後一個不能用.為標誌了 temp = 0; len = pEnd - pEntry; for (int j = 0; j < len; j++) { temp = temp * 10 + (*pEntry - '0'); pEntry ++; } Resule |= temp<<24; return Resule; //192.168.1.1 0x0101a8c0 }
至於整數到IP 我直接使用了sprintf 作弊了 哈哈
char* Int_to_IP(unsigned int Ip,char* buff)
{
sprintf(buff,"%u.%u.%u.%u",
(unsigned char)(*(char*)&Ip),
(unsigned char)(*(char*)((char*)&Ip + 1)),
(unsigned char)(*(char*)((char*)&Ip + 2)),
(unsigned char)(*(char*)((char*)&Ip + 3))
);
return buff;
}
相關推薦
演算法練習Ip地址與整數的互相轉換ipstrToint
int ipstr2int(const char *ip, unsigned int *ipvalue) { if (ip == NULL || ipvalue==NULL) return -
ip地址與整數相互轉換
1、ip地址轉成整數 原理:ip地址的每段可以看成是一個0-255的整數,把每段拆分成一個二進位制形式組合起來,然後把這個二進位制數轉變成整數。 舉例:一個ip地址為10.0.3.193每段數字
java版ip地址與整數的互相轉換
在工作中可能會遇到將ip地址轉為long型的整數,或者將十進位制整數轉換為ip地址的情況,下面介紹一種轉換的方法。 一、將ip地址轉成long數值 將IP地址轉化成整數的方法如下: 1、通過String的split方法按.分隔得到4個長度的陣列 2、通過左移位操作(<
ip地址與整數之間的轉換
IP地址轉換為整數:IP地址每段可以堪稱是8位無符號整數即0~255,把每段拆分成一個二進位制形式,組合起來,然後把這個二進位制數變啊層一個無符號32位整數。整數轉換為IP地址:把這個整數轉換成一個無符號32位二進位制數。從左到右,每八位進行一下分割,得到4段8位的二進位制數,把這些二進位制數轉換成整數然
【轉】IP地址與整數之間的轉換
1、IP地址轉換為整數 原理:IP地址每段可以看成是8位無符號整數即0-255,把每段拆分成一個二進位制形式組合起來,然後把這個二進位制數轉變成 一個無符號32為整數。 舉例:一個ip地址為10.0.3.193 每段數字 相對應的二進位制數 10 00001010 0 00
32位二進制IP地址與十進制IP地址互相轉換
bin parseint 轉換 idt result 32位 temp str ann 代碼: 1 import java.util.List; 2 import java.util.ArrayList; 3 import java.util.Scanner;
php 版本號 整數化 mysql存儲入庫 比較大小【版本處理類,提供版本與數字互相轉換】
tro mysql存儲 nload target 版本 存儲 ron 整數 php 下載地址:https://download.csdn.net/download/a724008158/10659015php 版本號 整數化 mysql存儲入庫 比較大小【版本處理類,提供版
IP地址與數字地址相互轉換
http://goolgeplus.lofter.com/post/8de0d_d6d0a 站長網IP查詢地址:http://tool.chinaz.com/ip/ 可以看到,IP查詢工具是先將IP段地址轉化成數字地址,再才得到IP的實體地址。 ------------
ip地址和整數轉換
inet_addr函式 地址轉換, 把"A.B.C.D"的IP地址轉換為32位長整數 [宣告] unsigned long inet_addr ( const char FAR *cp ); [引數] cp - 指向IP地址字串的指標 [返回值] 當函式成功呼叫時
IP地址與域名之間的轉換(Windows + Visual Studio 2015)
注意:博主用的visual studio 2015,在windows除錯程式需要連結ws2_32.lib庫,才能正常執行程式。 開啟專案的“Property”->"Linker"->"
ip地址與Long型資料進行相互轉換
/** * 根據ip地址計算出long型的資料 * @param ipStr * @return */ public static long ip2Long(String strIP){ long[] ip=new long[4];
IP地址與MAC地址
class gateway 運行 釋放 width 無法 是否 adapter sub 眾所周知,每一塊網卡在出廠時都燒錄了世界唯一的MAC地址,使用該地址可以在網絡中識別不同的計算機。同時,互聯網中也使用IP地址來定位客戶端,這是因為IP地址比MAC地址定位更方便,而且也
IP地址與子網掩碼
主機 目的 5.0 32位 分開 劃分 做的 等於 網上 一、IP地址 IP地址:Internet上每臺主機都必須有一個唯一的地址以區別於其他主機,這個地址就是Internet地址,也稱作IP地址; IPv4(第四版本的IP協議)是構成現今互聯網技術的基石協議; IP地
Java對象與JSON互相轉換jsonlib以及手動創建JSON對象與數組——(二)
ring lnl tft sem mkf ted family sae key 首先聲明一下,jsonlib轉換與GSON相比太差勁了,操作不是一般的繁瑣。GSON可以直接轉換成各種集合與對象類型。強烈推薦使用GSON。而且GSON一個方法就可以解決,
IP地址與域名的關系
internet 電腦 容易 符號 書寫 int 訪問 最終 之間 1.IP地址:IP地址是用來唯一標識互聯網上計算機的邏輯地址,讓電腦之間可以相互通信. 每臺連網計算機都依靠IP地址來互相區分、相互聯系 2.域名:由於IP地址是數字標識,使用時難以記憶和書寫,因此在I
基礎篇--ip地址與子網掩碼的認識
機器 -s white style 大於 進制的轉換 bit 目標 管理 目錄:1、IP地址的作用2、IP地址如何表示3、IP地址的結構4、子網掩碼5、IP地址的分類6、私有IP地址7、二進制與十進制的轉換8、練習題IP地址的作用: 在一定範圍內,唯一的標識,一個上網
js時間與毫秒互相轉換
art rep ons 格式 date lac 得到 需要 gettime 1)日期轉換為毫秒 如果格式是:yyyy/mm/dd hh:mm:ss可以直接轉換。var oldTime = (new Date("2018/07/09 14:13:11")).getTime(
json 串與字典互相轉換
轉換 pri dump pre 解析 定義 name load import #導入json import json #定義字典 data={‘name‘:‘tom‘,‘age‘:16} #json.dumps轉換字典為json j_data=json.dumps(dat
JQuery擴展方法實現Form表單與Json互相轉換
val adjust new 映射 checked josn fin pop undefined JQuery筆記 記兩段代碼,使用JQuery實現從表單獲取json與後端交互,以及把後端返回的json映射到表單相應的字段上。 把表單轉換出json對象 //把表單
百度地圖API實現 地址&經緯度 互相轉換
原文地址:https://blog.csdn.net/a497785609/article/details/72356588 1.根據地址取得經緯度: 請求地址:http://api.map.baidu.com/geocoder/v2/?address=中國成都人才市場&output