例如:
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)
答案 0 :(得分:0)
我认为,您可以使用工会
union Int32And4Bytes {
int32_t IntegerValue;
unsigned char ByteArray[4];
};
它应该正确对齐,IIRC。