Solved

Convert hex string to double

Posted on 2007-11-27
8
3,904 Views
Last Modified: 2010-08-05
double xx=0;
string txt=null;

txt = "0942afc8131d6837";

xx=Double.Parse(txt, System.Globalization.NumberStyles.HexNumber);

this complies fine but when I run the application I get this error "An unhandled exception of type 'System.ArgumentException' occurred in mscorlib.dll"

Is there a function in C# 2005 that will take a string Hex number and convert it to a double?
0
Comment
Question by:lcrogers
  • 4
  • 2
  • 2
8 Comments
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 20361683
there is not, but you can build one by your own:

double hex2double(string hex)
{
        double result = 0.0;
        foreach (char c in hex)
        {
              double val = (double)System.Convert.ToInt32(c.ToString(),16);
              result = result * 16.0 + val;
        }
        return result;
}
0
 
LVL 6

Accepted Solution

by:
Roopesh_7 earned 250 total points
ID: 20361764
Hi friend,
Use below method to convert

double xx = 0;
            string txt = null;
           
            txt = "0942afc8131d6837";

            xx = Convert.ToInt64(txt, 16);
            Response.Write(xx);

0
 

Author Comment

by:lcrogers
ID: 20361813
I need it to be a doule precession number,  this will give me a whole number.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 20361951
what do you mean with a double precision number? both examples comply with your question.
0
 
LVL 6

Expert Comment

by:Roopesh_7
ID: 20362008
 string txt = null;
           
            txt = "0942afc8131d6837";

            txt = Convert.ToInt64(txt, 16).ToString("#0.00");

give a string format at the end......

then convert that string to double by convert.todouble(txt );
0
 

Author Comment

by:lcrogers
ID: 20362123
it must be converted to a negetive earth center to earth fix number (exsample: -53512345.3567N, -36512342.3345E;  I am getting these values from a military GPS grid system.

0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 20362412
you have to do it with unsafe code. Assuming both coordinates are inside a single hex:

        unsafe public static void Transform(string hex, out float x, out float y)
        {
            UInt32 x0 = System.Convert.ToUInt32(hex.Substring(0, 8), 16);   // first half of hex code
            UInt32 y0 = System.Convert.ToUInt32(hex.Substring(8, 8), 16);   // last half of hex code

            x = *((float *)&x0);
            y = *((float *)&y0);
        }

Assumming it is just one component:
        unsafe public static void Transform(string hex, out double a)
        {
            UInt64 a0 = System.Convert.ToUInt64(hex16);
            a = *((double *)&a0);
        }


but with the sample hex string you have provided, it doesn't output any valid value as you shown.
Also, you have to take care about the byte ordering (big/little endian)
0
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 20362416
also you will need to instruct the compiler to allow the unsafe code in the Project Settings.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question