inet_addr函式
位址轉換, 把"a.b.c.d"的ip位址轉換為32位長整數
[宣告]
unsigned long inet_addr ( const char far *cp );
[引數]
cp - 指向ip位址字串的指標
[返回值]
當函式成功呼叫時返回用32位整數表示的ip位址
失敗時返回inaddr_none.
實際是就是乙個按位的排列,
比如 a.b.c.d的換成整數就是:
(((a*256)+b)*256+c)*256+d
1409823698 = 540833d2 h => 以位元組分解: 54h 08h 33h d2h => 轉回10進製: 84 08 51 210
看明白了嗎?
就是把每個段分別轉為16進製制,合併成整型:
1409823698 = (84 shl 24) or (8 shl 16) or (51 shl 8) or 210
合併轉為整型後因為最高位可能會是1,所以可能會出來負值,不用管它就行了。
例項:uses winsock;
showmessage(inttostr(inet_addr('192.168.0.1')));
整數轉化為ip
vc:char* dotteddecimal(unsigned long uladdr)
;unsigned long ulmask[4] = ;
for (int i = 0; i < 4; i++)
return szaddr;
}逆函式,網上查的:
7、將網路位址轉換為用點分割的ip位址,是上面函式的逆函式。
char far * inet_ntoa( struct in_addr in );
舉例:char * ipaddr=null;
char addr[20];
in_addr inaddr;
inaddr. s_addr=16777343;
ipaddr= inet_ntoa(inaddr);
strcpy(addr,ipaddr);
這樣addr的值就變為127.0.0.1。
整數與IP位址的轉換
原理 ip位址的每段可以看成是乙個0 255的整數,把每段拆分成乙個二進位制形式組合起來,然後把這個二進位制數轉變成 乙個長整數。每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 組合起來即為 00001010 0000000...
IP位址轉 整數互相轉換
知識點 乙個二進位制數,按位左移n位,就是把該數的值乘以2的n次方 二進位制除二即右移一位 1 ip位址轉換為整數 乙個無符號32為整數。每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 public class ip pub...
整數與ip位址間的轉換
原理 ip位址的每段可以看成是乙個0 255的整數,把每段拆分成乙個二進位制形式組合起來,然後把這個二進位制數轉變成 乙個長整數。舉例 乙個ip位址為10.0.3.193 每段數字 相對應的二進位制數 10 00001010 0 00000000 3 00000011 193 11000001 組合...