16进制数,如: 40 A0 24 76 转换为浮点数,求救!

解决方案 »

  1.   

    string s="40A02476"; 
    float f=float.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);
    MessageBox.Show(f.ToString());
      

  2.   

    string s="40A02476"; 存在问题
      

  3.   

    float f=(float)0x40A02476;
    跟你得结果差别很打啊
      

  4.   

    给一段非安全的代码
    float f = 0F;
    string s="7624a040"; //要倒过来
    int i = float.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);
    *(int *)(&f) = i; //这是非安全代码,要用非安全模式编译。还有一个办法比较麻烦,就是用代码分析。float共有32位二进制数,第一位表示符号,接下来的四位表示次幂,其它位为有效数字,好象叫IEEE浮点数标准。 
      

  5.   

    unsafe float ConvertFromInt(int i)
    {
    float f=0;
    *(int *)(&f) = i;
    return f;
    }
      

  6.   

    给一段非安全的代码
    float f = 0F;
    string s="7624a040"; //要倒过来
    int i = float.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);
    *(int *)(&f) = i; //这是非安全代码,要用非安全模式编译。
     
    int i = float.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);这句话有问题,无法编译的!在C#中有没有实现的代码?
      

  7.   

    用楼上的方法可以,编译的时候将项目编译属性"允许不安全代码块"设置为true:string s="40A02476";
    int i=int.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);
    float f=ConvertFromInt(i);
    MessageBox.Show(f.ToString());//5.004451unsafe float ConvertFromInt(int i)
    {
    float f=0;
    *(int *)(&f) = i;
    return f;
    }
      

  8.   

    这样试一下:
    string ceshi="40A02476";
    int ll=Convert.ToInt32(ceshi,16);
    float ff=(float)ll;
      

  9.   

    目前,我也存在这样的问题,我想将一个16进制表示的字符串转换为浮点型(double),不知道怎么转换了:string str="0x40A02476";
    double=Double.Parse(str1)报错,说str格式不正确,哪位高人指点一下啊!