49 lines
1.5 KiB
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);
|
|
}
|
|
}
|