JBBPUtils { public static long reverseByteOrder(long value, int numOfLowerBytesToInvert) { if (numOfLowerBytesToInvert < 1 || numOfLowerBytesToInvert > 8) { throw new IllegalArgumentException("Wrong number of bytes [" + numOfLowerBytesToInvert + ']'); } long result = 0; int offsetInResult = (numOfLowerBytesToInvert - 1) * 8; while (numOfLowerBytesToInvert-- > 0) { final long thebyte = value & 0xFF; value >>>= 8; result |= (thebyte << offsetInResult); offsetInResult -= 8; } return result; } 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 testReverdeByteOrder_ErrorForZeroByteNumber() { assertThrows(IllegalArgumentException.class, () -> JBBPUtils.reverseByteOrder(1234, 0)); }
@Test public void testReverdeByteOrder_ErrorForTooBigByteNumber() { assertThrows(IllegalArgumentException.class, () -> JBBPUtils.reverseByteOrder(1234, 9)); }
@Test public void testReverdeByteOrder() { assertEquals(0x0000000000000012L, JBBPUtils.reverseByteOrder(0x0000000000000012L, 1)); assertEquals(0x0000000000003412L, JBBPUtils.reverseByteOrder(0x0000000000001234L, 2)); assertEquals(0x0000000000563412L, JBBPUtils.reverseByteOrder(0x0000000000123456L, 3)); assertEquals(0x0000000078563412L, JBBPUtils.reverseByteOrder(0x0000000012345678L, 4)); assertEquals(0x0000009A78563412L, JBBPUtils.reverseByteOrder(0x000000123456789AL, 5)); assertEquals(0x0000BC9A78563412L, JBBPUtils.reverseByteOrder(0x0000123456789ABCL, 6)); assertEquals(0x00DEBC9A78563412L, JBBPUtils.reverseByteOrder(0x00123456789ABCDEL, 7)); assertEquals(0xF1DEBC9A78563412L, JBBPUtils.reverseByteOrder(0x123456789ABCDEF1L, 8)); }