JBBPUtils { public static byte[] packInt(final int value) { if ((value & 0xFFFFFF80) == 0) { return new byte[] {(byte) value}; } else if ((value & 0xFFFF0000) == 0) { return new byte[] {(byte) 0x80, (byte) (value >>> 8), (byte) value}; } else { return new byte[] {(byte) 0x81, (byte) (value >>> 24), (byte) (value >>> 16), (byte) (value >>> 8), (byte) value}; } } private  JBBPUtils(); static byte[] strToUtf8(final String str); static String utf8ToStr(final byte[] array); static boolean isNumber(final String num); static byte[] packInt(final int value); static int packInt(final byte[] array, final JBBPIntCounter position, final int value); static int unpackInt(final byte[] array, final JBBPIntCounter position); static String array2hex(final byte[] array); static String array2bin(final byte[] array); static String array2oct(final byte[] array); static String byteArray2String(final byte[] array, final String prefix, final String delimiter, final boolean brackets, final int radix); static byte reverseBitsInByte(final byte value); static byte reverseBitsInByte(final JBBPBitNumber bitNumber, final byte value); static String bin2str(final byte[] values); static String bin2str(final byte[] values, final boolean separateBytes); static String bin2str(final byte[] values, final JBBPBitOrder bitOrder, final boolean separateBytes); static List<JBBPAbstractField> fieldsAsList(final JBBPAbstractField... fields); static byte[] str2bin(final String values); static byte[] str2bin(final String values, final JBBPBitOrder bitOrder); static String[] splitString(final String str, final char splitChar); static void assertNotNull(final Object object, final String message); static String int2msg(final int number); static String normalizeFieldNameOrPath(final String nameOrPath); static void closeQuietly(final Closeable closeable); static byte[] str2UnicodeByteArray(final JBBPByteOrder byteOrder, final String str); static byte[] reverseArray(final byte[] nullableArrayToBeInverted); static byte[] splitInteger(final int value, final boolean valueInLittleEndian, final byte[] buffer); static byte[] splitLong(final long value, final boolean valueInLittleEndian, final byte[] buffer); static byte[] concat(final byte[]... arrays); static long reverseByteOrder(long value, int numOfLowerBytesToInvert); static String double2str(final double doubleValue, final int radix); static String float2str(final float floatValue, final int radix); static String ulong2str(final long ulongValue, final int radix, final char[] charBuffer); static String ensureMinTextLength(final String text, final int neededLen, final char ch, final int mode); static String removeLeadingZeros(final String str); static String removeTrailingZeros(final String str); static boolean arrayStartsWith(final byte[] array, final byte[] str); static boolean arrayEndsWith(final byte[] array, final byte[] str); static int makeMask(final int value); static boolean equals(final Object o1, final Object o2); static final String[] ARRAY_STRING_EMPTY; static final JBBPAbstractField[] ARRAY_FIELD_EMPTY; }
@Test public void testPackIntToByteArray() { for (int i = 0; i < 0x80; i++) { final byte[] array = JBBPUtils.packInt(i); assertEquals(1, array.length); assertEquals(i, array[0] & 0xFF); } final Random rnd = new Random(1234); for (int i = 0; i < 1000; i++) { final int generated = rnd.nextInt(0x7FFFFFFF); final byte[] array = JBBPUtils.packInt(generated); if ((generated & 0xFFFFFF80) == 0) { assertEquals(1, array.length); assertEquals(i, array[0] & 0xFF); } else if ((generated & 0xFFFF0000) == 0) { assertEquals(3, array.length); assertEquals(0x80, array[0] & 0xFF); assertEquals(generated >>> 8, array[1] & 0xFF); assertEquals(generated & 0xFF, array[2] & 0xFF); } else { assertEquals(5, array.length); assertEquals(0x81, array[0] & 0xFF); assertEquals((generated >>> 24) & 0xFF, array[1] & 0xFF); assertEquals((generated >>> 16) & 0xFF, array[2] & 0xFF); assertEquals((generated >>> 8) & 0xFF, array[3] & 0xFF); assertEquals(generated & 0xFF, array[4] & 0xFF); } } }