私のIPv6の知識は非常に限られていますが、この質問を解決するのに役立ちますか?既知のように、IPv4の場合、ネットマスクが25の場合、マッピングアドレスは255.255.255.128である必要があります。算術のコードは次のようなものです。
public static String getNetmaskFromBits( int bits )
{
StringBuilder b = new StringBuilder( 15 );
int tempBits = 0xFFFFFFFF;
tempBits = tempBits << 32 - bits;
b.append( ( tempBits & 0xFF000000 ) >>> 24 ).append( '.' );
b.append( ( tempBits & 0x00FF0000 ) >>> 16 ).append( '.' );
b.append( ( tempBits & 0x0000FF00 ) >>> 8 ).append( '.' );
b.append( tempBits & 0x000000FF );
return b.toString();
}
IPv6はどうですか?128ビットにすることができます。IPv6アドレスにマッピングするにはどうすればよいですか?コードは次のようになります。
public static String getIpv6NetmaskFromBits( int bits )
{
StringBuilder b = new StringBuilder( 15 );
...
return b.toString();
}