我用C#在服务器上放了个TCP服务器程序,监听8888端口
现在客户端用16进制编码后发送数据到服务器
服务器怎么接收呢
我开始用System.Text.Encoding.ASCII.GetString(buffer, 0, bufferlen);
来接收,但显示乱码
可是Encoding并没有16进制的相关方法
该怎么接收才不乱码呢
希望得到各位大大的帮忙
我在线等
现在客户端用16进制编码后发送数据到服务器
服务器怎么接收呢
我开始用System.Text.Encoding.ASCII.GetString(buffer, 0, bufferlen);
来接收,但显示乱码
可是Encoding并没有16进制的相关方法
该怎么接收才不乱码呢
希望得到各位大大的帮忙
我在线等
解决方案 »
- this.dataGridView1.Columns[0].Visible = false;
- datagrid 问题
- excel中导入数据到oreacle中,有点不同哦
- xml 解析出错
- 如何判断xls文件是否已打开!
- 求硬盘序列号读取代码。---asp.net+c#
- 我裝了VC#2005的測試版到期卸載後,VS.NET2003不能做DEBUG了,更痛苦的是VS.NET2003連卸載和REINSTALL都不行啊,請教如何重裝VS.NET2003???
- 请教dataGrid问题,在线等待解决!
- 想学C#,各位给点意见
- 请问在C#里怎样在数据链路层截获数据包?
- 监听函数listen迷惑
- 如何获取十二个星座的幸运号?
我想把这个16进制的数据读出来,我读出其中我需要的数据保存到数据库
我把收到的byte数组,抓图发给你,行吗?
str=encoding.bigenglish.getstring(buffer);
可能你输入了汉字
private string ToUnicodeString(string s)
{
StringBuilder sb = new StringBuilder();
byte[] bytes = Encoding.Unicode.GetBytes(s);
for (int i = 0; i < bytes.Length; )
{
sb.Append("\\u");
sb.Append(bytes[i + 1].ToString("x2"));
sb.Append(bytes[i].ToString("x2")); i += 2;
} return sb.ToString();
}private string ToNormalString(string input)
{
string pattern = "\\\\u([0-9A-Fa-f]{2})([0-9A-Fa-f]{2})";
Match match = System.Text.RegularExpressions.Regex.Match(input,pattern);
System.Collections.ArrayList numlist = new System.Collections.ArrayList(); while(match.Success)
{
string s = match.Groups[2].Value;
byte num = byte.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
numlist.Add(num);
s = match.Groups[1].Value;
num = byte.Parse(s, System.Globalization.NumberStyles.AllowHexSpecifier);
numlist.Add(num);
match = match.NextMatch();
} byte[] bytes = new byte[numlist.Count];
numlist.CopyTo(bytes);
string result = Encoding.Unicode.GetString(bytes);
return result;
}
调用结果:
ToUnicodeString("Hello World"); --> \u0048\u0065\u006c\u006c\u006f\u002c\u0020\u0057\u006f\u0072\u006c\u0064\u0021string str = @"\u0048\u0065\u006c\u006c\u006f\u002c\u0020\u0057\u006f\u0072\u006c\u0064\u0021";
ToNormalString(str); --> Hello World!
这是使用系统的默认编码方式。
我现在调试的程序是车载GPS将数据传到指定的服务器上
服务器上放了一个TCP服务器监听程序
我现在要做的就是将收到的数据,提取出我需要的信息,比如经纬度,但现在我用下面方式接收数据
Byte[] buffer = new Byte[1024];
try
{
bufLen = client.Available;
client.Receive(buffer, 0, bufLen, SocketFlags.None);
if (bufLen == 0)
continue;
}当我用Encoding.Default.GetString(buffer);想把他变成字符后,再分解字符串的时候就发现Encoding.Default.GetString(buffer)返回的是一个乱码的东西GPS的数据编码 GPS通讯协议里是这样编码的:
说明:“$”(0x24):记录头,用于中心识别记录起始位置;
时间:0x050316,标准时间5点3分16秒,相当于北京时间13点3分16秒;
日期:0x220902,2002年9月22日;
纬度值:0x22128745,22度12.8745
经度值:0x113466574C,113度46.6574,最后字节(序号0x15)含义:
bit7654,经度最后一位
bit3,1:东经,0:西经
bit2,1:北纬,0:南纬
bit1,1:A,0:V
bit0,未定义
速度、方向:0x014028:速度014节,方向028大概情况就是这样!我循环输出过 buffer里的字节,发现他们都是ASCII值,0-255之间,但用ascii解析出来就是乱码,搞不懂