将IP地址字节转换为整数

时间:2014-04-23 07:13:53

标签: c++ c visual-c++ windows-server-2008-x64

例如:

1。要转换32位IP地址(IPv4):

unsigned char ByteAddress[4];
unsigned int* IntegerAddress;

IntegerAddress = reinterpret_cast<unsigned int*> &ByteAddress ;

然后我可以使用IntegerAddress来比较ip地址。

2。要转换128位IP地址(IPv6):

unsigned char ByteAddress[16];
uint64_t* LongAddress;

LongAddress = reinterpret_cast<uint64_t*> &ByteAddress

然后我可以使用LongAddress [0]和LongAddress [1]来比较ip地址。

是否优先使用位移操作符(因为它更快)? 这是很好的编程习惯吗?它适用于所有平台(尤其是unix和windows 64)和编译器(C ++,VS2010)

1 个答案:

答案 0 :(得分:0)

我认为,您可以使用工会

union Int32And4Bytes {
int32_t IntegerValue;
unsigned char ByteArray[4];
};

它应该正确对齐,IIRC。