Click here to Skip to main content
Click here to Skip to main content
Go to top

Hexadecimal, Binary, and Decimal conversions

, 22 Apr 2005
Rate this:
Please Sign up or sign in to vote.
This project contains a class aimed to all possible combinations for hexadecimal, binary, and decimal conversions.

Sample Image - BinaryAndHexConversions.jpg

Introduction

By now, you would think that Microsoft would have a set of standard functions available to do Hexadecimal, Binary, and Decimal conversions. I looked around and found the BitArray, but it was not enough for, what I needed here is a set of classes to do all of these conversions including decimal conversions to signed integers and unsigned integers.

The Project

The project consists of a Bits class to do all the bit manipulations, a Hex class to do all the hexadecimal manipulations, a Conversion class that consists of static methods to do miscellaneous set of conversions among hexadecimal, binary, and decimal conversions. The project also includes a HexTextBox class and a HexGrid class.

The HexTextBox class is derived from RichTextBox and its purpose is to ensure that the user enters only valid digits that are within a valid range. The class can be set to Hexadecimal mode, Decimal mode, and Binary mode. When in hexadecimal mode, it prevents user from entering digits that are not hexadecimal. Same functionality for decimal and binary mode. In binary mode, the tooltip is enabled to show the bit position as the mouse is moved across the text box.

The HexGrid class is derived from DataGrid and can be used to edit hexadecimal sets of data.

Conversions Available

public static string IntToBin(int number, int numBits)
public static string UIntToBin(uint number, int numBits)
public static string HexToBin(string hexData)
public static int BinToInt(string binData)
public static uint BinToUInt(string binData)
public static string BinToHex(string binData)
public static int HexToInt(string hexData)
public static uint HexToUInt(string hexData)
public static string IntToHex(int data, int numBytes)
public static string UIntToHex(uint data, int numBytes)
public static int UIntToInt(uint data, int numBits)
public static uint IntToUInt(int data, int numBits)

Additional Conversions

You can add many more conversions as needed. The constructors of the Bits and Hex classes have additional overloads that you can use to create additional conversions.

For example, to convert from an array of bytes to a bit string, you would use the following code:

byte[] byteArray = new byte[] {1,2,3,4,5,6,7,8}; 
string bitString = new Bits(byteArray).ToString();

Additional Documentation

The project includes full documentation with descriptions available for all public methods. The documentation was created with NDoc.

How to Use the Code?

To use the code you just need to include the "Bin" project in your solution, add it to your references and then you should be able to start using any of the conversions available.

For example, to convert from a hexadecimal string to binary string:

string hexData = "AABBCCDD01234567";
string binData = Conversion.HexToBin(hexData);

Conclusion

I hope, you find these classes useful and let me know when you find bugs so that I can correct them in my code.

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

Share

About the Author

rudy.net
Web Developer
United States United States
No Biography provided

Comments and Discussions

 
QuestionIs this DLL licensed freeware? PinmemberKhadar12331-Mar-09 1:31 
AnswerRe: Is this DLL licensed freeware? Pinmemberrudy.net31-Mar-09 10:06 
GeneralGenius!! Pinmemberindogerman12-Feb-09 23:11 
Generalunable to open file Pinmembermetoofaiza1-Nov-08 21:23 
Generalgood day!! PinmemberMark Arjim Parba15-Jun-08 17:50 
GeneralRe: good day!! Pinmemberrudy.net16-Jun-08 8:42 
QuestionCAN SHOW ME the CODE HEX to DEC in JAVA PinmemberranzJR22-Nov-07 18:55 
AnswerRe: CAN SHOW ME the CODE HEX to DEC in JAVA Pinmemberrudy.net26-Nov-07 1:17 
Generaldisplay a binary file in heaxdecimal PinmemberNEKSA16-Jul-06 0:13 
GeneralRe: display a binary file in heaxdecimal Pinmemberrudy.net17-Jul-06 3:51 
Generalsigned vs unsigned PinmemberTalal Sultan10-May-06 3:22 
GeneralRe: signed vs unsigned Pinmemberrudy.net10-May-06 18:55 
QuestionConvert from Hex into Binary Pinmemberrandacodeproject17-Apr-06 22:05 
AnswerRe: Convert from Hex into Binary Pinmemberrudy.net18-Apr-06 2:36 
GeneralUpdates to this component PinmemberEric Engler6-Apr-06 5:15 
I made some updates to this project to work with a low-level debugger I'm writing. I wanted to use this as an edit box that displays the contents of a CPU register in 4 possible modes: Hex, Decimal Signed, Decimal Unsigned, Binary.
 
Also, I needed it to support several states: modified by system, modified by user, and committed. I show modified by system with a red foreground, modified by user with a yellow background, and committed with normal black on white. It also keeps the previous value if the user modifies it so it can rollback the value.
 
I am not using the HexTextBox in a grid at this time, but that may be a future enhancement. I've made a new HexGrid that has many enhancements but I'm not ready to publish that yet. It's turned into a big project. There are many limitations of the Windows DataGrid that came into play, but thanks to the OOP design, I was able to customize all of those areas to make it behave as I wanted it to.
 
You can download my current HexTextBox from here. I'll make changes to this sometimes, so please submit bugs to me.
 
http://www.EricEngler.com/downloads/HexTextBox.zip

GeneralRe: Updates to this component Pinmemberrudy.net6-Apr-06 12:29 
General.NET ver 2.0 Pinmembergordsh19-Jan-06 9:29 
GeneralRe: .NET ver 2.0 Pinmemberrudy.net19-Jan-06 9:41 
Generalsuggestions PinmemberEric Engler2-May-05 4:38 
GeneralMy code PinmemberDrGUI29-Apr-05 11:08 
GeneralRe: My code Pinmemberterwin17-Jun-05 6:11 
GeneralRe: My code Pinmembernew2unix@gmail.com23-Jan-06 3:52 
GeneralRe: My code Pinmemberterwin23-Jan-06 3:59 
GeneralRe: My code Pinmembernew2unix@gmail.com23-Jan-06 4:03 
GeneralRe: My code Pinmemberterwin23-Jan-06 4:08 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web02 | 2.8.140905.1 | Last Updated 23 Apr 2005
Article Copyright 2005 by rudy.net
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid