5,530,111 members and growing! (15,963 online)
Email Password   helpLost your password?
General Programming » Algorithms & Recipes » Data Structures     Intermediate

Converting Hexadecimal String to/from Byte Array in C#

By neilck

Provides and demonstrates a hexadecimal string encoding/decoding class
C#, Windows, .NET 1.0, .NET, Visual Studio, Dev

Posted: 6 May 2003
Updated: 6 May 2003
Views: 364,568
Bookmarked: 62 times
Announcements
Want a new Job?



Search    
Advanced Search
Sitemap
60 votes for this Article.
Popularity: 7.87 Rating: 4.43 out of 5
4 votes, 6.7%
1
2 votes, 3.3%
2
2 votes, 3.3%
3
11 votes, 18.3%
4
41 votes, 68.3%
5

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



Location: Canada Canada

Other popular Algorithms & Recipes articles:

Article Top
Sign Up to vote for this article
You must Sign In to use this message board.
FAQ FAQ Noise ToleranceSearch Search Messages 
 Layout  Per page   
 Msgs 1 to 25 of 57 (Total in Forum: 57) (Refresh)FirstPrevNext
Subject  Author Date 
GeneralReally goodmemberankit_vyas16:50 2 Sep '08  
GeneralHow can I convert null to byte array?memberNadya_Nos10:06 6 Aug '08  
GeneralWhat about the speed and simplicity of my function ? [modified]membergaby_la_star2:05 12 Nov '07  
GeneralRe: What about the speed and simplicity of my function ?memberNathan Moinvaziri15:56 14 Aug '08  
Generalthank u so much neilck !memberbeginner_csharper2:25 15 Oct '07  
GeneralBitConvertermemberMihail Stefanov14:27 7 Jul '07  
GeneralSimpler, faster, better ... and most of all standard waymemberSébastien Ros6:36 14 May '07  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberStefan Gheorghe14:23 3 Jul '07  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberSebastien Ros1:31 11 Jul '07  
GeneralRe: Simpler, faster, better ... and most of all standard way [modified]memberGeorge Helyar7:33 5 Apr '08  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberj@mars5:44 16 Apr '08  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberGeorge Helyar6:33 16 Apr '08  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberj@mars7:20 16 Apr '08  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberGeorge Helyar8:43 16 Apr '08  
GeneralRe: Simpler, faster, better ... and most of all standard waymemberbobslayer6:20 31 Jul '07  
GeneralPerfectmemberDavepow1610:21 5 Mar '07  
NewsAnother fast variant of mine.... [modified]memberRealFractalizeR10:32 4 Mar '07  
GeneralI think this is faster (tested)membermeraklideve4:40 25 Jun '08  
GeneralRe: I think this is faster (tested)memberRealFractalizeR12:52 25 Jun '08  
Generalbig endian hexmembervadivelkumar0:28 22 Feb '07  
GeneralBuilt in .NET parse function that does thismemberMGutman8:45 8 Jan '07  
GeneralRe: Built in .NET parse function that does thismembernoGuns11:43 19 Apr '07  
GeneralRe: Built in .NET parse function that does thismemberMr Marchepane10:10 7 May '07  
GeneralRe: Built in .NET parse function that does thismemberSimon Capewell4:29 22 Nov '07  
GeneralSaved me a bunch of time - thanksmemberTimBSmith197114:36 5 Jan '07  

General General    News News    Question Question    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

PermaLink | Privacy | Terms of Use
Last Updated: 6 May 2003
Editor: Nishant Sivakumar
Copyright 2003 by neilck
Everything else Copyright © CodeProject, 1999-2008
Web19 | Advertise on the Code Project