package net.sourceforge.pain.db; /** * User: fmike Date: 04.03.2003 Time: 20:32:43 Class for packing/unpacking image */ final class DbPacker { public static short unpack2(final byte[] arr, final int offs) { return (short) ((arr[offs] << 8) | (arr[offs + 1] & 0xFF)); } public static int unpack4(final byte[] arr, final int offs) { return (arr[offs] << 24) | ((arr[offs + 1] & 0xFF) << 16) | ((arr[offs + 2] & 0xFF) << 8) | (arr[offs + 3] & 0xFF); } public static long unpack8(final byte[] arr, final int offs) { return ((long) unpack4(arr, offs) << 32) | (unpack4(arr, offs + 4) & 0xFFFFFFFFL); } public static void pack2(final byte[] arr, final int offs, final short val) { arr[offs] = (byte) (val >> 8); arr[offs + 1] = (byte) val; } public static void pack4(final byte[] arr, final int offs, final int val) { arr[offs] = (byte) (val >> 24); arr[offs + 1] = (byte) (val >> 16); arr[offs + 2] = (byte) (val >> 8); arr[offs + 3] = (byte) val; } public static void pack8(final byte[] arr, final int offs, final long val) { pack4(arr, offs, (int) (val >> 32)); pack4(arr, offs + 4, (int) val); } public static byte[] intArrayToBytes(final int[] array) { final byte[] bar = new byte[4 + 4 * array.length]; pack4(bar, 0, array.length); for (int i = 0; i < array.length; i++) { pack4(bar, 4 + (i << 2), array[i]); } return bar; } }