byte,float转换 知道一个byte数组,4个字节表示一个浮点数。 如何转为float?反过来,怎么把float转到byte[4]数组中? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 技术帖class Program{ static void Main(string[] args) { float f = 12; byte[] bytes = BitConverter.GetBytes(f); Console.WriteLine(BitConverter.ToString(bytes)); // 去 Console.WriteLine(BitConverter.ToSingle(bytes, 0)); // 来 Console.ReadKey(); }} float f = 12.33f; unsafe { var pf = (byte*)&f; byte[] data = new byte[4] { pf[0], pf[1], pf[2], pf[3] }; } RPWT...早起的鸟儿有虫吃,哈哈...楼主把分都给他吧,要不伴水又郁闷了... 好象串口通讯经常涉及这个.1 首先你得判断4个字节的高低位,先低后高 还是先高后低2 给你一个字节转10整形的,根据需要你将你的小数部分对应字节除1000,或者100就可以了,返回为float //先低后高 16进制字节转换10进制数值 /// <summary> /// 16进制字节转换10进制数值 /// </summary> /// <param name="dataVal">字节数组</param> /// <returns></returns> public static int HexToInt(byte[] dataVal) { int reVal = -1; if (dataVal.Length == 2) { reVal = (int)dataVal[1] << 8; reVal += (int)dataVal[0]; return reVal; } if (dataVal.Length == 4) { reVal = (int)dataVal[3] << 24; reVal += (int)dataVal[2] << 16; reVal += (int)dataVal[1] << 8; reVal += (int)dataVal[0]; return reVal; } return reVal; } 反过来转换也是一样如下,你修改下就可以了我这个都是整形转换的 public static byte[] IntToHex(int val, int sizeLengh) { byte[] reByteVal = new byte[sizeLengh]; if (reByteVal.Length == 2) { //先低后高 reByteVal[0] = (byte)val; reByteVal[1] = (byte)(val >> 8); return reByteVal; } if (reByteVal.Length == 4) { reByteVal[0] = (byte)val; reByteVal[1] = (byte)(val >> 8); reByteVal[2] = (byte)(val >> 16); reByteVal[3] = (byte)(val >> 24); return reByteVal; } return reByteVal; } 恩,是串口通信,要求的就是低字节在前,高字节在后。 所以我每读取4个字节,转为byte数组后,是不是要反着写? str = (OutBuf[0] + (OutBuf[1] >> 8) + (OutBuf[2] >> 16) + (OutBuf[3] >> 24)).ToString() 本来这样子就把4字节转为string显示了,现在这4个字节如果是浮点数,怎么转? BitConverter.ToSingle(OutBuf, 0)一句话的事,你不动手测试一下。 Array.Reverse(buffer);数组倒序排列。 请教。 求大家帮帮忙解决下devExPress里的GridControl问题。谢谢大家,在线。 C# winform 求助! C#中同时压缩两个文件 数据集GetChange()的问题 关于文件更新的问题 如何生成扫雷游戏里的小格子? 我想用c#.net做个网页浏览器。怎么我没找到这个控件,高手给个提示。 100分相送,跪求c# socket解决方法 关于视图的简单问题,在线等待~~~~~~~~急!!!!!!!! 买了新电脑桌,连书架的。散... 定义一个类,声明一个实例构造函数执行,声明实例数组构造函数不执行 为什么不能分页
{
static void Main(string[] args)
{
float f = 12;
byte[] bytes = BitConverter.GetBytes(f);
Console.WriteLine(BitConverter.ToString(bytes)); // 去
Console.WriteLine(BitConverter.ToSingle(bytes, 0)); // 来
Console.ReadKey();
}
}
unsafe
{
var pf = (byte*)&f;
byte[] data = new byte[4] { pf[0], pf[1], pf[2], pf[3] };
}
1 首先你得判断4个字节的高低位,先低后高 还是先高后低
2 给你一个字节转10整形的,根据需要你将你的小数部分对应字节除1000,或者100就可以了,返回为float
//先低后高 16进制字节转换10进制数值
/// <summary>
/// 16进制字节转换10进制数值
/// </summary>
/// <param name="dataVal">字节数组</param>
/// <returns></returns>
public static int HexToInt(byte[] dataVal)
{
int reVal = -1; if (dataVal.Length == 2)
{
reVal = (int)dataVal[1] << 8; reVal += (int)dataVal[0]; return reVal;
} if (dataVal.Length == 4)
{
reVal = (int)dataVal[3] << 24; reVal += (int)dataVal[2] << 16; reVal += (int)dataVal[1] << 8; reVal += (int)dataVal[0];
return reVal;
}
return reVal;
}
{
byte[] reByteVal = new byte[sizeLengh]; if (reByteVal.Length == 2)
{ //先低后高
reByteVal[0] = (byte)val; reByteVal[1] = (byte)(val >> 8); return reByteVal;
}
if (reByteVal.Length == 4)
{
reByteVal[0] = (byte)val; reByteVal[1] = (byte)(val >> 8); reByteVal[2] = (byte)(val >> 16); reByteVal[3] = (byte)(val >> 24); return reByteVal;
}
return reByteVal;
}