MXD-Server/src/tools/BitTools.java

49 lines
1.5 KiB
Java

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