IPv4のアドレスをC++で扱う
なんでいまさら、という気がするけども、C/C++でIPアドレス(IPv4)を扱う必要があったので、ボーッと考えてみた。
int型を32bitとすると、IPv4のアドレスは、ちょうどunsigned
int型の変数1つで扱う事ができる。
unsigned
int 型のiAddress
に値が入っていてAAA.BBB.CCC.DDDの形式に変換したい場合は、iAddress
をシフトすればいい。例えば以下のような感じ。
iAAA
= (iAddress >> 24) & 255
iBBB =
(iAddress >> 16) & 255
iCCC = (iAddress
>> 8) & 255
iDDD = (iAddress >>
0) &
255
iAAA〜iDDDは0〜255の値が入る。
逆に変換する場合はAAA〜DDDを逆にシフトしていって足せばいい。
iAddress
=
(iAAA<<24)+(iBBB<<16)+(iCCC<<8)+iDDD
IPv6は、、、、、どうなんでしょう。
Posted: 日 - 11月 12, 2006 at 09:18 午後