如何将16进制数转换为浮点数?

pppcool 2004-09-17 08:55:50
16进制数,如: 40 A0 24 76 转换为浮点数,求救!
...全文
1293 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
windlyzhang 2005-04-03
  • 打赏
  • 举报
回复
目前,我也存在这样的问题,我想将一个16进制表示的字符串转换为浮点型(double),不知道怎么转换了:

string str="0x40A02476";
double=Double.Parse(str1)

报错,说str格式不正确,哪位高人指点一下啊!
Jim3 2004-09-18
  • 打赏
  • 举报
回复
unsafe float ConvertFromInt(int i)
{
float f=0;
*(int *)(&f) = i;
return f;
}
hhhh63 2004-09-18
  • 打赏
  • 举报
回复
给一段非安全的代码
float f = 0F;
string s="7624a040"; //要倒过来
int i = float.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);
*(int *)(&f) = i; //这是非安全代码,要用非安全模式编译。

还有一个办法比较麻烦,就是用代码分析。float共有32位二进制数,第一位表示符号,接下来的四位表示次幂,其它位为有效数字,好象叫IEEE浮点数标准。


khpcg 2004-09-18
  • 打赏
  • 举报
回复
float f=(float)0x40A02476;
跟你得结果差别很打啊
khpcg 2004-09-18
  • 打赏
  • 举报
回复
我现在试着做一下
khpcg 2004-09-18
  • 打赏
  • 举报
回复
string s="40A02476"; 存在问题
pppcool 2004-09-18
  • 打赏
  • 举报
回复
16进制数,如: 40 A0 24 76 转换为浮点数是5.004,上面的哥们和这个值的差别很大!
mbh0210 2004-09-18
  • 打赏
  • 举报
回复
这样试一下:
string ceshi="40A02476";
int ll=Convert.ToInt32(ceshi,16);
float ff=(float)ll;
popcorn 2004-09-18
  • 打赏
  • 举报
回复
用楼上的方法可以,编译的时候将项目编译属性"允许不安全代码块"设置为true:

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

unsafe float ConvertFromInt(int i)
{
float f=0;
*(int *)(&f) = i;
return f;
}
pppcool 2004-09-18
  • 打赏
  • 举报
回复
给一段非安全的代码
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#中有没有实现的代码?
popcorn 2004-09-17
  • 打赏
  • 举报
回复
string s="40A02476";
float f=float.Parse(s,System.Globalization.NumberStyles.AllowHexSpecifier);
MessageBox.Show(f.ToString());

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧