Reputation: 25
Below is the code(conversion of hexadecimal to decimal) I'm trying to work out .. I found error which appears in place I've commented in the code..
Please provide a solution to rectify ..
static void Main(string[] args)
{
byte[] byteData;
int n;
byteData = GetBytesFromHexString("001C0014500C0A5B06A4FFFFFFFFFFFFFFFFFFFFFFFFFFFF");
n = byteData.Length;
Console.WriteLine(n);
string s = System.Text.Encoding.UTF8.GetString(byteData, 0, n); //error
Console.WriteLine(s);
Console.ReadLine();
}
public static byte[] GetBytesFromHexString(string hexString)
{
//MessageBox.Show("getbytes ");
if (hexString == null)
return null;
if (hexString.Length % 2 == 1)
hexString = '0' + hexString; // Up to you whether to pad the first or last byte
byte[] data = new byte[hexString.Length / 2];
for (int i = 0; i < data.Length; i++)
{
data[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
Console.WriteLine(data[i]);
}
What I'm getting as output is: "\0\0P\f\n[���������������" The converted decimal value is not been encoded.
UPDATE: Expected output is "0 28 0 20 80 12 10 91 6 164 255 255 255 255 255 255 255 255 255 255 255 255 255 255"
Upvotes: 0
Views: 1247
Reputation: 1225
Instead of
string s = System.Text.Encoding.UTF8.GetString(byteData, 0, n);
write
string s = String.Join(" ", byteData);
Upvotes: 1
Reputation: 1851
You can use this and try to play with the radix ( in this case 2 ). This snippet, which I once wrote, helped me all the time.
private void ConvHexStringToBitString(ref string strErrorBitMask)
{
try
{
string strTempStr = strErrorBitMask;
if (strTempStr != string.Empty)
{
strTempStr = Convert.ToString(Convert.ToInt32(strTempStr.Replace(" ", "0"), 16), 2);
}
strErrorBitMask = strTempStr.PadLeft(32, '0');
}
catch (Exception ex)
{
LogWithMsg(ex);
}
}
Upvotes: 0