コード例 #1
0
ファイル: StringExtension.cs プロジェクト: strife013/Sean
        /// <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);
        }