C# “字节到字符串”;小数点是个问题;
这段代码是用C#dot net编写的 我正在接收以下格式的数据 49 46 48 50,相当于十进制格式的1.02 使用这个简单的代码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]
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);
}
}
}
}