Add toByte() method.
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 23 May 2009 15:18:48 +0000 (17:18 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sat, 23 May 2009 15:18:48 +0000 (17:18 +0200)
src/net/pterodactylus/util/number/Hex.java

index 246fa41..3f6145f 100644 (file)
@@ -61,4 +61,26 @@ public class Hex {
                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;
+       }
+
 }