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 に答える