
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.