Click here to Skip to main content
Click here to Skip to main content

Converting Hexadecimal String to/from Byte Array in C#

By , 6 May 2003
 

Sample Image

Introduction

While the .NET framework provides methods to convert a byte array into a Hexadecimal string ( byte.ToString(“X”) ), it is not so easy to convert a hexadecimal string back into a byte array. Such a function is useful when you need to backup data from your application on paper, such as an encryption key, and later, convert it back into data after the user types it in.

The HexEncoding class provided here, contains functions which allow for the conversion of a string in hexadecimal format into a byte array, and back. It also contains functions which lets you check the formatting of the string before conversion, and how many bytes a given string will produce.

Background

In a hexadecimal string, one byte is represented two hexadecimal characters. A hexadecimal character has a value of (A-F, 0-9).

e.g. string “01FFA0” is equivalent to byte[] { 1, 255, 160 }

Using the code

HexEncoding is the name of the class I created with static functions for hexadecimal string conversion.

Here’s a sample of how it is used, when the Convert button is clicked like on the screenshot:

private void button1_Click(object sender, System.EventArgs e)
{
    string hexString = txtHex.Text;
    int discarded;
    txtByteCount.Text = ((int)HexEncoding.GetByteCount(hexString)).ToString();
    txtLength.Text = hexString.Length.ToString();
    byte[] byteArray = HexEncoding.GetBytes(hexString, out discarded);
    txtDiscard.Text = discarded.ToString();
    string temp = "";
    for (int i=0; i<byteArray.Length; i++)
    {
        temp += byteArray[i].ToString("D3") + " ";
    }
    txtByte.Text = temp;
    txtHex2.Text = HexEncoding.ToString(byteArray);
}

HexEncoding.GetByteCount(string hexString) returns the number of bytes that will be generated from the hexString.

HexEncoding.GetBytes(string hexString, out int discarded) returns the byte array converted from the hexString, and the second parameter returns the number of non-hexadecimal characters that were ignored in the string. This includes dashes, whitespace, and letters after ‘F’.

HexEncoding.ToString(byte[]) returns the newly converted byte array back into string form. Notice the ‘-‘ characters are now missing.

The key function provided by the framework to convert a hexadecimal string to a single byte is this:

// byte newByte = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber);

where “hex” is of the form “1A”, “00”, “FF”, etc.

Thanks to Polux on the .NET 247 newsgroups who posted the int.Parse(...) answer to another hexadecimal question.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

neilck
Canada Canada
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralMy vote of 2memberHaiSonTran12 Apr '11 - 19:25 
GeneralGreat jobmembermapelo6329 Jan '10 - 16:23 
GeneralExplanation on "D3"memberjenniBrooklyn13 Dec '09 - 23:35 
GeneralRe: Explanation on "D3"memberRascalRobot27 Jan '10 - 8:20 
GeneralLicensemembercesarfricks20 Aug '09 - 9:07 
Questioncan some one send me the built executable? I am not able to build it :(membervikrampatwardhan26 Jan '09 - 19:08 
GeneralFaster GetBytes() [modified]memberMark Jerde22 Jan '09 - 11:16 
GeneralRe: Faster GetBytes()memberMember 334182311 Oct '09 - 18:20 
GeneralReally goodmemberankit_vyas2 Sep '08 - 15:50 
QuestionHow can I convert null to byte array?memberNadya_Nos6 Aug '08 - 9:06 
QuestionWhat about the speed and simplicity of my function ? [modified]membergaby_la_star12 Nov '07 - 1:05 
Generalthank u so much neilck !memberbeginner_csharper15 Oct '07 - 1:25 
GeneralBitConvertermemberMihail Stefanov7 Jul '07 - 13:27 
GeneralSimpler, faster, better ... and most of all standard waymemberSébastien Ros14 May '07 - 5:36 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberStefan Gheorghe3 Jul '07 - 13:23 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberSebastien Ros11 Jul '07 - 0:31 
GeneralRe: Simpler, faster, better ... and most of all standard way [modified]memberGeorge Helyar5 Apr '08 - 6:33 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberj@mars16 Apr '08 - 4:44 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberGeorge Helyar16 Apr '08 - 5:33 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberj@mars16 Apr '08 - 6:20 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberGeorge Helyar16 Apr '08 - 7:43 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberramaluciano30 Nov '08 - 9:12 
GeneralRe: Simpler, faster, better ... and most of all standard waymemberbobslayer31 Jul '07 - 5:20 
GeneralPerfectmemberDavepow165 Mar '07 - 9:21 
NewsAnother fast variant of mine.... [modified]memberRealFractalizeR4 Mar '07 - 9:32 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web03 | 2.6.130516.1 | Last Updated 7 May 2003
Article Copyright 2003 by neilck
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid