byte[] aa = new byte[] { 0x3F, 0xCC, 0xCC, 0xCD };
byte[] aa = new byte[] { 63, 204, 204, 205 }; string[] result = new string[aa.Length]; for (int i = 0; i < aa.Length; i++) { result[i] = aa[i].ToString("X2"); }
修正下: float[] result = (from x in fourbytes.Select((v, i) => new { v, i }) group x by x.i / 4 into g select BitConverter.ToSingle(g.Select(y => y.v).ToArray(), 0)).ToArray();
string[] result = new string[aa.Length];
for (int i = 0; i < aa.Length; i++)
{
result[i] = aa[i].ToString("X2");
}
三楼的你那个是转换成STRING 数组了,我要的是能转换成BYTE数组
我为什么这么问呢?因为i我要把一个BYTE数组里的数据,四个字节一换,换成浮点数的,所以我必须先把BYTE数组中的十进制数先转换成十六进制
计算下 3F,CC,CC,CD的浮点数是多少?
不好意思啊,麻烦你解释下 其中的 x,y,z,i,v分别什么意思?谢谢啊/
string s = aa.JoinText(", ", "0x{0:X2}");
首先对原始数据作投影,变成 index(i) + value(v)的形式。
然后按照index分组,每相邻4个变成一组。
然后不要index了,只要value,转换成字节数组
再用BitConverter.ToSingle()投影成float
最后转化成数组。建议你看下LINQ。以及MSDN的介绍。
举个简单的例子一个Int占4字节,就是4个Byte
你可以先用位运算">>"和"<<"把Byte数组拼接成你需要的数具体可以查下MSDN中的位运算
错误 2 参数“1”: 无法从“TResult[]”转换为“byte[]” D:\C#_Program\test\test\Program.cs
错误 3 “AnonymousType#1”不包含“Select”的定义,并且找不到可接受类型为“AnonymousType#1”的第一个参数的扩展方法“Select”(是否缺少 using 指令或程序集引用?) D:\C#_Program\test\test\Program.cs
group x by x.i / 4 into g
select BitConverter.ToSingle(g.Select(y => y.v).ToArray(), 0)).ToArray();