用的是05版本的,我觉得16进制需要转成10进制存入吧,程序应该怎么写求大神指导啊,数据库链接神马的都编好了。下面是我写的实验用的程序,转10进制就蒙圈了已经。
private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)//16进制接收模式
{
int n = serialPort.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
serialPort.Read(buf, 0, n);//读取缓冲数据
//依次的拼接出16进制字符串
this.Invoke((EventHandler)(delegate
{
foreach (byte b in buf)
{
builder.Append(b.ToString("X2") + " ");
}
string hexstring = builder.ToString();
int i = Int32.Parse(hexstring, System.Globalization.NumberStyles.HexNumber);
//this.richTextBox1.AppendText(builder.ToString());
this.richTextBox1.AppendText(i);
}));
}
中间把16进制字符串转成int型字符了应该是,然后怎么能变成10进制?另外如何存入sql数据库呢?存入的应该是10进制还是16进制的啊?求指点。
直接存入数据库,数据库里显示的是什么数据啊?是二进制的?那怎么看呢?我还得做个显示收到的数据的部分。。。
追答数据列就设置为二进制数组 ,比如 sql server 中的binary、varbinary或image。
数据库中的数据不一定非要能显示的。它只要管存数据就好了。怎么显示是界面上的事。
从数据库中读取出为二进制数组(byte[]),可以转为16进制的字符串显示,也可以转为二进制的字符串显示,或是界面上有一个选项按钮,由使用人员来选择什么格式显示。再比如这个二进制数组是一个图像文件,那么使用Image载入,然后显示在界面上。
可以理解为不用转成16进制显示,就用您的那个命令直接显示收到的数据就行么?那后边存入数据库就直接把str内数据存入么?数据库内是显示什么样的数据呢?