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;
}
}