serialPort1.ReadLine()从一个设备中读取到如下数据

「已注销」 2010-05-04 02:47:26
以下这些数据如何转换成16进制?这些数据是二进制的吗?
"b?\0<?\v.\t\0_9?????A8??OArA\02+E!??[???AV?uZ??uAN???\a,\0\0\0\0\0\0\0\0\0?^KIC?tA?2??\0\0\0\0\0\0\0\0??????vAU{??\0\0\0\0\0\0\0\04?ex?uA????\t???L???A???g?A;??D?#\0\0\0\0\0\0\0\0W?????rAl???Ug??A???VrA#u7E\a/\0"
...全文
364 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mngzilin 2010-05-04
  • 打赏
  • 举报
回复
你这种数据从串口读取出来的时候编码方式应该不对吧。

string str = "你的数据";
byte[] buf=System.Text.Encoding.GetEncoding("utf-8").GetBytes(str);
huminghua 2010-05-04
  • 打赏
  • 举报
回复
二进制
xiaojin0710 2010-05-04
  • 打赏
  • 举报
回复
二进制数据是用0和1两个数码来表示的数据。
只在此山中 2010-05-04
  • 打赏
  • 举报
回复
不是二进制,你用readline读得到的是字符串。根据不同的编码,显示出不同的内容。
你可以设置下serialPort1的编码encoding,得到正确的字符串内容(ascii gb2312 unicode)。
如果接收的是字节流,建议用如下方式:
// 获取字节长度
int bytes = serialPort1.BytesToRead;
// 创建字节数组
byte[] buffer = new byte[bytes];
// 读取缓冲区的数据到数组
serialPort1.Read(buffer, 0, bytes);
要转成十六进制,可以:
string str;
for (int i=0;i<bytes;i++)
{
str = str + string.Format("{0:X}", buffer[i])+ " ";
}
skep99 2010-05-04
  • 打赏
  • 举报
回复
不是二进制,下个 "串口调试助手" 对你调试串口有帮助
wiki14 2010-05-04
  • 打赏
  • 举报
回复
二进制数据是用0和1两个数码来表示的数据。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧