ip位址和整數轉換

2021-06-01 13:09:50 字數 1091 閱讀 4482

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 組合...