网络传输自定义协议中0xFF 等被变成char型 然后就变成另外一个数值了,怎么办?内附代码

crazypeople 2017-09-05 08:34:31
IPEndPoint newclient = (IPEndPoint)this.tempSocket.RemoteEndPoint;

NetworkStream ns = new NetworkStream(tempSocket);
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
char[] myReadBuffer = new char[1024];

int count;
while (true)
{
try
{
count = sr.Read(myReadBuffer, 0, myReadBuffer.Length);//读取数据,这个地方myReadBuffer[0]就不是0xFF
if (count > 0)
{

Byte[] bTemp = Encoding.Default.GetBytes(myReadBuffer);

if (bTemp[0]== 0xFF) //这个地方bTemp[0]变成0x3F,实际上我传过来的是0xFF
{
sw.Write(myReadBuffer, 0, count);//将原数据发回客户端
sw.Flush();
}

}
}
catch
{
break;
}
}
sw.Close();
sr.Close();
ns.Close();
}

我网络传过来的是16进制 FF FF FF FF 00 02 00 00 06 6B CD D5 66 2E 27 但是 前面4个FF 和中间CD D5 都变了。
请大神帮忙。
...全文
172 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
homesos 2017-09-05
  • 打赏
  • 举报
回复
楼上说的有道理 char[] myReadBuffer 改成 byte[] myReadBuffer 给你个参考,其中提到了BYTE http://www.cnblogs.com/MrALei/p/3582755.html
xuzuning 2017-09-05
  • 打赏
  • 举报
回复
char 保存的是 unicode 字符 byte 中才是原始的二进制数据

110,536

社区成员

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

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

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