永发信息网

c#float[]转为byte[]该怎么转?

答案:4  悬赏:10  手机版
解决时间 2021-04-05 10:52
  • 提问者网友:暗中人
  • 2021-04-04 18:05
c#float[]转为byte[]该怎么转?
最佳答案
  • 五星知识达人网友:愁杀梦里人
  • 2021-04-04 19:39
float f = -120.5f;
            byte[] b = BitConverter.GetBytes(f);
            foreach (var b1in b)
            {
                for (int k = 0; k < 8; k++)
                {
                    Console.Write(GetBit(b1,k));
                }
            }       

    Console.WriteLine("
120.5f:");            float ff = 120.5f;
            byte[] bb = BitConverter.GetBytes(ff);
            foreach (var b1in bb)
            {
                for (int k = 0; k < 8; k++)
                {
                    Console.Write(GetBit(b1, k));
                }
            }

            Console.WriteLine("
"+BitConverter.ToSingle(bb,0));其输出是:

从这里可以看出:使用BitConverter.GetBytes得到的长度为4的Byte[] bytes中,bytes[0]是float在计算机中存储的最低字节,且其中bytes[0]的最低位就是float在计算机中存储的最低位,且要从Byte[]获得float也应该按照上述顺序排列的Byte[]。

全部回答
  • 1楼网友:归鹤鸣
  • 2021-04-04 22:24
float[] a = new float[10] { 9.7f, 9.8f, 9.9f, 10, 10.08f, 10.8f, 9.98f, 9.8f, 9.9f, 10 };
byte[] b = new byte[10];
for (int i = 0; i < 10; i++)
{
    b[i] = (byte)a[i];
}
还是有问题,你的9.7转换为Byte就变成了9,要么就转成一个byte数组。追问大神,我现在头都炸掉啦,这些数据关系把我打败啦
这个问题能有解决的办法吗?追答首先你要确定干什么用
再就是9.7本来就不能转成单个byte,你的需求有问题。追问的确是这样啊,四个字节变一个字节,哎呀,,,,可是协议里面给的是这样子啊
  • 2楼网友:深街酒徒
  • 2021-04-04 20:47
for(int i=0;i<10;i++)
{
b[i]=(byte)a[i];
}
  • 3楼网友:春色三分
  • 2021-04-04 20:30

你们回答都负点责好不!!!
一看这数据就不是能直接转的.就算硬转过去了.也转不回来.
首先 byte [] b = new byte [10]; 这个一维数组只能存一个数, 也就是存一个9.7或 9.8,但绝不能存 {9.7,9.8}
只能用List 或者 二维byte[][] b 或者 DataTbale Columns为byte
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯