package tools; public class BitTools { public static int getShort(byte[] array, int index) { int ret = array[index]; ret &= 255; ret |= array[(index + 1)] << 8 & 0xFF00; return ret; } public static String getString(byte[] array, int index, int length) { char[] cret = new char[length]; for (int x = 0; x < length; x++) { cret[x] = (char) array[(x + index)]; } return String.valueOf(cret); } public static String getMapleString(byte[] array, int index) { int length = array[index] & 0xFF | array[(index + 1)] << 8 & 0xFF00; return getString(array, index + 2, length); } public static byte rollLeft(byte in, int count) { int tmp = in & 0xFF; tmp <<= count % 8; return (byte) (tmp & 0xFF | tmp >> 8); } public static byte rollRight(byte in, int count) { int tmp = in & 0xFF; tmp = tmp << 8 >>> count % 8; return (byte) (tmp & 0xFF | tmp >>> 8); } public static byte[] multiplyBytes(byte[] in, int count, int mul) { byte[] ret = new byte[count * mul]; for (int x = 0; x < count * mul; x++) { ret[x] = in[(x % count)]; } return ret; } public static int doubleToShortBits(double d) { long l = Double.doubleToLongBits(d); return (int) (l >> 48); } }