+ @Nonnull public final byte[] ipv4PrefixToBytes(@Nonnull final P4 prefix) {
+ final String str = ipv4PrefixString(prefix);
+ final int slash = str.lastIndexOf('/');
+
+ final byte[] bytes = new byte[INET4_LENGTH + 1];
+ fillIpv4Bytes(bytes, str, slash);
+ bytes[INET4_LENGTH] = (byte)Integer.parseInt(str.substring(slash + 1), 10);
+ return bytes;
+ }
+
+ private static void fillIpv4Bytes(final byte[] bytes, final String str, final int limit) {
+ int out = 0;
+ int val = 0;
+ for (int i = 0; i < limit; ++i) {
+ final char c = str.charAt(i);
+ if (c == '.') {
+ bytes[out++] = (byte) val;
+ val = 0;
+ } else {
+ val = 10 * val + (c - '0');
+ }
+ }
+
+ bytes[out] = (byte) val;
+ }
+