将四个byte数据转成一个float型数据? 高手请进

QTaiLang 2005-09-21 09:49:17
请问如何将保存在内存中的以byte类型存储的浮点数读出

我做了如下代码,数据读出了但是不能赋值


其中FloatValue:为计算出的浮点数据;GetByte是存储byte类型数据的数组; 是从第ByteNum 个byte 字节开始转成浮点型数据的。
public unsafe void ByteToFloat(ref float[] FloatValue,byte[] GetBytes,int ByteNum)
{
float *pFloat;
try
{
fixed (byte * pByte = GetBytes)
{
byte * pElem = pByte+ByteNum;
for(int i=0;i< GetBytes.Length;i=i+4 )
{
pFloat=(float*)pElem;

FloatValue[i]=*pFloat; //程序走到该步后在调试状态下 自动和计算机断开连接,将其直接在PDA上运行,程序自动结束。但是可以查看到*pFloat的值计算是正确地。
pElem=pElem+4;
}
}
}
}
但是我在进行float 转byte 时也用到了用指针给数据赋值的情况没有出现过异常。例如: float AA=*pByte;//pByte 是byte类型的指针。该运算正常。
...全文
1396 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qpl007 2005-09-21
  • 打赏
  • 举报
回复
从float 转换成 byte
——>
byte[] bts = BitConverter.GetBytes(float);
QTaiLang 2005-09-21
  • 打赏
  • 举报
回复
qpl007(蓝色闪电)谢谢!!
那从float 转换成byte型应该也有现成的函数了??
qpl007 2005-09-21
  • 打赏
  • 举报
回复
没有楼主想的那么复杂:

float a = 123.456F;
byte[] bts = BitConverter.GetBytes(a); //将 float 转换成字节数组
float b = BitConverter.ToSingle(bts,0); //从字节数组转换成 float
TechEye 2005-09-21
  • 打赏
  • 举报
回复
直接用位移

byte[] bytes = new byte[]{0,1,33,245};
float f = (bytes[0]<<24) + (bytes[1]<<16) + (bytes[2]<<8) + bytes[3];
QTaiLang 2005-09-21
  • 打赏
  • 举报
回复
帮忙看看!

110,533

社区成员

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

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

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