return hexString.toString();
}
+ /**
+ * Converts the given value to a hexadecimal string and zero-pads it to the
+ * given number of digits.
+ *
+ * @param value
+ * The value to convert
+ * @param digits
+ * The number of digits
+ * @return The formatted hexadecimal value
+ */
+ public static String toHex(long value, int digits) {
+ StringBuilder hexString = new StringBuilder();
+ hexString.append(Long.toHexString(value));
+ while (hexString.length() < digits) {
+ hexString.insert(0, '0');
+ }
+ return hexString.toString();
+ }
+
+ /**
+ * Decodes a hexadecimal string into a byte array.
+ *
+ * @param hexString
+ * The hexadecimal representation to decode
+ * @return The decoded byte array
+ * @see Integer#parseInt(java.lang.String, int)
+ */
+ public static byte[] toByte(String hexString) {
+ if ((hexString.length() & 0x01) == 0x01) {
+ /* odd length, this is not correct. */
+ throw new IllegalArgumentException("hex string must have even length.");
+ }
+ byte[] dataBytes = new byte[hexString.length() / 2];
+ for (int stringIndex = 0; stringIndex < hexString.length(); stringIndex += 2) {
+ String hexNumber = hexString.substring(stringIndex, stringIndex + 2);
+ byte dataByte = (byte) Integer.parseInt(hexNumber, 16);
+ dataBytes[stringIndex / 2] = dataByte;
+ }
+ return dataBytes;
+ }
+
}