We can convert a character to byte in C#, we can also convert a string to byte array using Encoding.ASCII.GetBytes
But if we want to convert a hexadecimal string to byte array then there is no inbuilt method in C#.
We can achieve this in C# by reading characters in the hexadecimal string
Below is a method "HexToByte" which take string as input and return byte array
private static byte[] HexToByte(string hexString) { int lengthCount = 0; // offset value is 2 for removing first two characters '0x' from hexadecimal string int offset = 2; int byteLength = 0; // byte array length will be half of hexadecimal string length byte[] bytes = new byte[(hexString.Length - offset) / 2]; byteLength = bytes.Length; for (lengthCount = 0; lengthCount < byteLength; lengthCount++) { // Adding two nybble from hexadecimal string to create one byte bytes[lengthCount] = (byte)((int.Parse(hexString[offset].ToString(), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture) << 4) | int.Parse(hexString[offset + 1].ToString(), System.Globalization.NumberStyles.HexNumber, CultureInfo.InvariantCulture)); offset += 2; } return bytes; }
Basic concept of above code is read two characters from hex string and create one byte, because one hexadecimal character is nibble, so to create a byte we can add two nibble
It is useful when you store a file in SQL table and column type is varchar as we have seen in post: How To Store Any File into SQL Database
Using above method "HexToByte" we can convert file stored in sql table of varchar type column in byte array, which can be used to read stored file