如何把一个4字节的浮点数转换成十进制的数

gomogomono 2013-10-28 02:58:31
RT
...全文
1407 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ctzhlzc 2013-10-29
  • 打赏
  • 举报
回复
楼主的方法1,应该是对的,楼主问的不太清楚,开始的以为强制类型转换了啊
ctzhlzc 2013-10-29
  • 打赏
  • 举报
回复
版主的回答不对,你再看看,4个字节转single,8个字节才是Double
gomogomono 2013-10-29
  • 打赏
  • 举报
回复
引用 6 楼 caozhy 的回复:
byte[] array = { 0x44, 0x1d, 0x28, 0x6b }; double d = BitConverter.GetDouble(array, 0); string s = d.ToString();
谢谢
gomogomono 2013-10-29
  • 打赏
  • 举报
回复
引用 8 楼 ctzhlzc 的回复:
版主的回答不对,你再看看,4个字节转single,8个字节才是Double
版主的没用,不知道对不对
threenewbee 2013-10-28
  • 打赏
  • 举报
回复
byte[] array = { 0x44, 0x1d, 0x28, 0x6b }; double d = BitConverter.GetDouble(array, 0); string s = d.ToString();
gomogomono 2013-10-28
  • 打赏
  • 举报
回复
问了一天终于知道方法了,有两个方法: 第一种

byte[] buffer = new byte[4];//你读出来的数据
buffer[3] = 0x44; buffer[2] = 0x1D; buffer[1] = 0x28; buffer[0] = 0x6B;
float f;
f = BitConverter.ToSingle(buffer, 0);
Console.WriteLine(f);
Console.ReadKey();
第二种 using System.Runtime.InteropServices;

unsafe
{
byte[] buffer = new byte[4];//你读出来的数据
buffer[3] = 0x44; buffer[2] = 0x1D; buffer[1] = 0x28; buffer[0] = 0x6B;
float tSingle;
Marshal.Copy(buffer, 0, (IntPtr)(&tSingle), 4);
Console.WriteLine(tSingle);
Console.ReadKey();
}
gomogomono 2013-10-28
  • 打赏
  • 举报
回复
引用 3 楼 kkaazz 的回复:
乘上一个固定的倍数啊,乘多少看你的数据值范围和需要保留的精度
我知道怎么办了
violick 2013-10-28
  • 打赏
  • 举报
回复
乘上一个固定的倍数啊,乘多少看你的数据值范围和需要保留的精度
gomogomono 2013-10-28
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
可以强转,会被舍弃小数
不能舍弃小数啊
bdmh 2013-10-28
  • 打赏
  • 举报
回复
可以强转,会被舍弃小数

110,536

社区成员

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

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

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