2

例如:

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)

4

1 回答 1

0

我认为,您可以为此使用工会

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

它应该正确对齐,IIRC。

于 2014-04-23T07:27:32.213 回答