此代码是用C#dot net
编写的我收到以下提及格式的数据 49 46 48 50,相当于十进制格式的1.02 使用这个简单的代码
DATA = Convert.ToByte(serialPort1.ReadByte());
稍后我在缓冲区中添加DATA
buffer[byte_count++] = DATA; // byte[] buffer = new byte[256];
现在有49 46 48 50 DATA字节值
buffer[1] contains 49
buffer[2] contains 46
buffer[3] contains 48
buffer[4] contains 50
问题是小数点 我可以通过简单的从48减去字节值将49转换为1 但是如何将46转换为小数点并将所有字节保存为字符串
非常感谢任何人都可以解决我的问题 阿什拉夫
答案 0 :(得分:4)
假设数据是ASCII使用(根据评论更新):
string MyString = Encoding.ASCII.GetString (buffer, 1, 4);
MSDN参考请参阅http://msdn.microsoft.com/de-de/library/system.text.encoding.aspx
答案 1 :(得分:2)
使用Encoding
类:
string value = Encoding.ASCII.GetString(buffer, 1, 4);
注意:您已将数据从1开始放在数组中,但数组索引基于零,因此您需要在GetString
调用中指定偏移量和长度。
答案 2 :(得分:0)
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);
}
}
}
}