[New] Added addition functions to ByteHelper

This commit is contained in:
Robert von Burg 2017-05-24 22:10:06 +02:00
parent 603703f681
commit 9f53ce8a55
1 changed files with 86 additions and 9 deletions

View File

@ -20,6 +20,22 @@ package li.strolch.utils.helper;
*/
public class ByteHelper {
public static boolean isBitSet(byte data, int position) {
return ((data >> position) & 1) == 1;
}
public static boolean isBitNotSet(short data, int position) {
return ((data >> position) & 1) == 0;
}
public static byte setBit(byte data, int position) {
return (byte) (data | (1 << position));
}
public static byte clearBit(byte data, int position) {
return (byte) (data & ~(1 << position));
}
/**
* Creates a long of the given byte array. They byte array must be 8 bytes long. The byte at index 0 is the highest
* byte
@ -56,7 +72,7 @@ public class ByteHelper {
public static int toInt(byte[] bytes) {
if (bytes.length != 4)
throw new IllegalArgumentException("The input byte array for a long must have 4 values"); //$NON-NLS-1$
throw new IllegalArgumentException("The input byte array for an int must have 4 values"); //$NON-NLS-1$
return ((bytes[0] & 0xff) << 24) //
| ((bytes[1] & 0xff) << 16) //
@ -64,6 +80,51 @@ public class ByteHelper {
| ((bytes[3] & 0xff));
}
/**
* Creates a short of the given byte array. They byte array must be 2 bytes long. The byte at index 0 is the highest
* byte
*
* @param bytes
* the bytes to convert to an integer
*
* @return the integer created from the bytes
*/
public static short toShort(byte[] bytes) {
if (bytes.length != 2)
throw new IllegalArgumentException("The input byte array for a short must have 2 values"); //$NON-NLS-1$
return (short) (((bytes[0] & 0xff) << 8) //
| ((bytes[1] & 0xff)));
}
public static short toShort(byte high, byte low) {
return (short) (((high & 0xff) << 8) | (low & 0xff));
}
public static void main(String[] args) {
System.out.println(asBinary(toShort((byte) 0x01, (byte) 0x03)));
}
/**
* Formats the given byte array to a binary string, separating each byte by a space
*
* @param bytes
* the byte to format to a binary string
*
* @return the binary string
*/
public static String asBinary(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(asBinary(b));
sb.append(StringHelper.SPACE);
}
return sb.toString();
}
/**
* Formats the given byte to a binary string
*
@ -89,20 +150,36 @@ public class ByteHelper {
}
/**
* Formats the given byte array to a binary string, separating each byte by a space
* Formats the given integer to a binary string, each byte is separated by a space
*
* @param bytes
* the byte to format to a binary string
* @param i
* the integer to format to a string
*
* @return the binary string
*/
public static String asBinary(byte[] bytes) {
public static String asBinary(short i) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(asBinary(b));
sb.append(StringHelper.SPACE);
}
sb.append(((i >>> 15) & 1));
sb.append(((i >>> 14) & 1));
sb.append(((i >>> 13) & 1));
sb.append(((i >>> 12) & 1));
sb.append(((i >>> 11) & 1));
sb.append(((i >>> 10) & 1));
sb.append(((i >>> 9) & 1));
sb.append(((i >>> 8) & 1));
sb.append(StringHelper.SPACE);
sb.append(((i >>> 7) & 1));
sb.append(((i >>> 6) & 1));
sb.append(((i >>> 5) & 1));
sb.append(((i >>> 4) & 1));
sb.append(((i >>> 3) & 1));
sb.append(((i >>> 2) & 1));
sb.append(((i >>> 1) & 1));
sb.append(((i >>> 0) & 1));
return sb.toString();
}