C# “字节到字符串”;小数点是个问题;

C# “字节到字符串”;小数点是个问题;,c#,C#,这段代码是用C#dot net编写的 我正在接收以下格式的数据 49 46 48 50,相当于十进制格式的1.02 使用这个简单的代码 DATA = Convert.ToByte(serialPort1.ReadByte()); 稍后,我将数据添加到缓冲区中 buffer[byte_count++] = DATA; // byte[] buffer = new byte[256]; 现在使用49 46 48 50数据字节值 buffer[1] contains 49 buffer[2]

这段代码是用C#dot net编写的

我正在接收以下格式的数据 49 46 48 50,相当于十进制格式的1.02 使用这个简单的代码

DATA = Convert.ToByte(serialPort1.ReadByte());
稍后,我将数据添加到缓冲区中

buffer[byte_count++] = DATA;   // byte[] buffer = new byte[256];
现在使用49 46 48 50数据字节值

buffer[1] contains 49
buffer[2] contains 46
buffer[3] contains 48
buffer[4] contains 50
问题是小数点 通过简单地从48减去字节值,我可以将49转换为1 但是我怎样才能将46转换成小数点并将所有字节保存到字符串中呢

如果有人能解决我的问题,我真的非常感激
Ashraf

假设数据为ASCII使用(根据注释更新):


MSDN参考请参见

假设数据为ASCII使用(根据注释更新):


MSDN参考请参见使用
编码类:

string value = Encoding.ASCII.GetString(buffer, 1, 4);

注意:您已将数据放置在从1开始的数组中,但数组索引是从零开始的,因此需要在
GetString
调用中指定偏移量和长度。

使用
编码
类:

string value = Encoding.ASCII.GetString(buffer, 1, 4);
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] bytes = { 49, 46, 48, 50 };
            //get string
            string str = new string(Encoding.ASCII.GetChars(bytes));
            Console.WriteLine(str);

            //get number
            double d;
            if (double.TryParse(str, out d))
            {
                Console.WriteLine(d);
            }

        }
    }
}

注意:您已将数据放置在从1开始的数组中,但数组索引是从零开始的,因此需要在
GetString
调用中指定偏移量和长度。

这将尝试解码整个缓冲区,在开头包含一个未使用的字节,在数据后包含251个未使用的字节。这将尝试解码整个缓冲区,包括开头的一个未使用的字节和数据后的251个未使用的字节。
    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            byte[] bytes = { 49, 46, 48, 50 };
            //get string
            string str = new string(Encoding.ASCII.GetChars(bytes));
            Console.WriteLine(str);

            //get number
            double d;
            if (double.TryParse(str, out d))
            {
                Console.WriteLine(d);
            }

        }
    }
}