/// <summary> /// Converts a hexadecimal string into its binary representation. /// </summary> /// <param name="hexString">The hex string</param> /// <returns>The byte array corresponding to the contents of the hex string, /// or null if the input string is not a valid hex string.</returns> public static byte[] HexToBinary(this string hexString) { if (hexString == null || hexString.Length % 2 != 0) { // input string length is not evenly divisible by 2 return(null); } var binary = new byte[hexString.Length / 2]; for (var i = 0; i < binary.Length; i++) { var highNibble = NumberUtil.HexToInt(hexString[2 * i]); var lowNibble = NumberUtil.HexToInt(hexString[2 * i + 1]); if (highNibble == -1 || lowNibble == -1) { return(null); // bad hex data } binary[i] = (byte)((highNibble << 4) | lowNibble); } return(binary); }