天天看點

騰訊面試算法題:IP位址與整數的互相轉換

1、IP位址轉換為整數

原理:IP位址每段可以看成是8位無符号整數即0-255,把每段拆分成一個二進制形式組合起來,然後把這個二進制數轉變成

一個無符号32為整數。

舉例:一個ip位址為10.0.3.193

每段數字 相對應的二進制數

10 00001010

0 00000000

3 00000011

193 11000001

組合起來即為:00001010 00000000 00000011 11000001,轉換為10進制就是:167773121,即該IP位址轉換後的數字就是它了。

這裡比較麻煩的是要記住二進制位數與整數的關系是

10*2^24 + 0*2^16+3*2^8 + 193

10*2^24 = 10<<24

是以a.b.c.d  轉化為數字就是a<<24 + b<<16+ c<<8 + d 等價于 a<<24 | b<<16 | c << 8 | d

等價于一個split函數,然後解析為int,然後加起來

将整數轉化為IP位址

把上面的過程倒過來做, &255, 然後轉化為string拼起來即可。

繼續閱讀