diff options
| author | J08nY | 2024-03-22 23:58:55 +0100 |
|---|---|---|
| committer | J08nY | 2024-03-25 14:52:43 +0100 |
| commit | 73af477a8774e1ede5dd8de6491eb353dc0b12bd (patch) | |
| tree | 2d4e3b19bc5fb55308b886032312be76341736d4 /src/cz/crcs/ectester/common/util/ByteUtil.java | |
| parent | 64b95fa059295e1dc23371c849f2302c1c18f5b4 (diff) | |
| download | ECTester-73af477a8774e1ede5dd8de6491eb353dc0b12bd.tar.gz ECTester-73af477a8774e1ede5dd8de6491eb353dc0b12bd.tar.zst ECTester-73af477a8774e1ede5dd8de6491eb353dc0b12bd.zip | |
Basic Gradle setup.
Diffstat (limited to 'src/cz/crcs/ectester/common/util/ByteUtil.java')
| -rw-r--r-- | src/cz/crcs/ectester/common/util/ByteUtil.java | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/src/cz/crcs/ectester/common/util/ByteUtil.java b/src/cz/crcs/ectester/common/util/ByteUtil.java deleted file mode 100644 index 442824a..0000000 --- a/src/cz/crcs/ectester/common/util/ByteUtil.java +++ /dev/null @@ -1,193 +0,0 @@ -package cz.crcs.ectester.common.util; - -/** - * Utility class, some byte/hex manipulation, convenient byte[] methods. - * - * @author Petr Svenda petr@svenda.com - * @author Jan Jancar johny@neuromancer.sk - */ -public class ByteUtil { - - /** - * Get a short from a byte array at <code>offset</code>, big-endian. - * - * @return the short value - */ - public static short getShort(byte[] array, int offset) { - return (short) (((array[offset] & 0xFF) << 8) | (array[offset + 1] & 0xFF)); - } - - /** - * Get a short from a byte array at <code>offset</code>, return it as an int, big-endian. - * - * @return the short value (as an int) - */ - public static int getShortInt(byte[] array, int offset) { - return (((array[offset] & 0xFF) << 8) | (array[offset + 1] & 0xFF)); - } - - /** - * Set a short in a byte array at <code>offset</code>, big-endian. - */ - public static void setShort(byte[] array, int offset, short value) { - array[offset + 1] = (byte) (value & 0xFF); - array[offset] = (byte) ((value >> 8) & 0xFF); - } - - /** - * Compare two byte arrays upto <code>length</code> and get first difference. - * - * @return the position of the first difference in the two byte arrays, or <code>length</code> if they are equal. - */ - public static int diffBytes(byte[] one, int oneOffset, byte[] other, int otherOffset, int length) { - for (int i = 0; i < length; ++i) { - byte a = one[i + oneOffset]; - byte b = other[i + otherOffset]; - if (a != b) { - return i; - } - } - return length; - } - - /** - * Compare two byte arrays, upto <code>length</code>. - * - * @return whether the arrays are equal upto <code>length</code> - */ - public static boolean compareBytes(byte[] one, int oneOffset, byte[] other, int otherOffset, int length) { - return diffBytes(one, oneOffset, other, otherOffset, length) == length; - } - - /** - * Test if the byte array has all values equal to <code>value</code>. - */ - public static boolean allValue(byte[] array, byte value) { - for (byte a : array) { - if (a != value) - return false; - } - return true; - } - - public static byte[] shortToBytes(short value) { - byte[] result = new byte[2]; - setShort(result, 0, value); - return result; - } - - public static byte[] shortToBytes(short[] shorts) { - if (shorts == null) { - return null; - } - byte[] result = new byte[shorts.length * 2]; - for (int i = 0; i < shorts.length; ++i) { - setShort(result, 2 * i, shorts[i]); - } - return result; - } - - /** - * Parse a hex string into a byte array, big-endian. - * - * @param hex The String to parse. - * @return the byte array from the hex string. - */ - public static byte[] hexToBytes(String hex) { - return hexToBytes(hex, true); - } - - /** - * Parse a hex string into a byte-array, specify endianity. - * - * @param hex The String to parse. - * @param bigEndian Whether to parse as big-endian. - * @return the byte array from the hex string. - */ - public static byte[] hexToBytes(String hex, boolean bigEndian) { - hex = hex.replace(" ", ""); - int len = hex.length(); - StringBuilder sb = new StringBuilder(); - - if (len % 2 == 1) { - sb.append("0"); - ++len; - } - - if (bigEndian) { - sb.append(hex); - } else { - for (int i = 0; i < len / 2; ++i) { - if (sb.length() >= 2) { - sb.insert(sb.length() - 2, hex.substring(2 * i, 2 * i + 2)); - } else { - sb.append(hex.substring(2 * i, 2 * i + 2)); - } - - } - } - - String data = sb.toString(); - byte[] result = new byte[len / 2]; - for (int i = 0; i < len; i += 2) { - result[i / 2] = (byte) ((Character.digit(data.charAt(i), 16) << 4) - + (Character.digit(data.charAt(i + 1), 16))); - } - return result; - } - - public static String byteToHex(byte data) { - return String.format("%02x", data); - } - - public static String bytesToHex(byte[] data) { - return bytesToHex(data, true); - } - - public static String bytesToHex(byte[] data, boolean addSpace) { - if (data == null) { - return ""; - } - return bytesToHex(data, 0, data.length, addSpace); - } - - public static String bytesToHex(byte[] data, int offset, int len) { - return bytesToHex(data, offset, len, true); - } - - public static String bytesToHex(byte[] data, int offset, int len, boolean addSpace) { - if (data == null) { - return ""; - } - StringBuilder buf = new StringBuilder(); - for (int i = offset; i < (offset + len); i++) { - buf.append(byteToHex(data[i])); - if (addSpace && i != (offset + len - 1)) { - buf.append(" "); - } - } - return (buf.toString()); - } - - public static byte[] concatenate(byte[]... arrays) { - int len = 0; - for (byte[] array : arrays) { - if (array == null) - continue; - len += array.length; - } - byte[] out = new byte[len]; - int offset = 0; - for (byte[] array : arrays) { - if (array == null || array.length == 0) - continue; - System.arraycopy(array, 0, out, offset, array.length); - offset += array.length; - } - return out; - } - - public static byte[] prependLength(byte[] data) { - return concatenate(ByteUtil.shortToBytes((short) data.length), data); - } -} |
