Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
?
Solved

Convert hex string to double

Posted on 2007-11-27
8
Medium Priority
?
4,340 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 750 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
Industry Leaders: 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: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering 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

In order to hide the "ugly" records selectors (triangles) in the rowheaders, here are some suggestions. Microsoft doesn't have a direct method/property to do it. You can only hide the rowheader column. First solution, the easy way The first sol…
This article describes a simple method to resize a control at runtime.  It includes ready-to-use source code and a complete sample demonstration application.  We'll also talk about C# Extension Methods. Introduction In one of my applications…
Screencast - Getting to Know the Pipeline
How can you see what you are working on when you want to see it while you to save a copy? Add a "Save As" icon to the Quick Access Toolbar, or QAT. That way, when you save a copy of a query, form, report, or other object you are modifying, you…

571 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