问题:
private Socket aaa;
byte[] bbb = new byte[100];
aaa.Receive(bbb, bbb.Length, 0);
string ccc = System.Text.Encoding.BigEndianUnicode.GetString(bbb);//把收到的字节数组转换为字符串
TextBox1. Text(ccc);收到数据,翻成字符串后,TextBox1能正确显示字符串,但是在断点调试时候,CCC的值始终有很多\0\0\
我把bbb开小点,\0\0\0会有所减少,但是我必须要把数组元数开够呀.虽然不影响输出结果,但是我程序中有对收到字符串的判断,判断CCC的值.
现在假如判断CCC=="A"
我就得在程序里写if (ccc==a\0\0\0\0\0.....)
这样弄得好郁闷哟,为什么多了这么多\0出来,文本框输出的字符串却正常. Encoding.UTF8;Encoding.ASCII;Encoding.Unicode;我都试过了,还是一个样子.这些字节与字符串的相互转换函数,我都单独测试过都没问题,但是一拿进SOCKET收发的时候,收的数据就会加很多\0
private Socket aaa;
byte[] bbb = new byte[100];
aaa.Receive(bbb, bbb.Length, 0);
string ccc = System.Text.Encoding.BigEndianUnicode.GetString(bbb);//把收到的字节数组转换为字符串
TextBox1. Text(ccc);收到数据,翻成字符串后,TextBox1能正确显示字符串,但是在断点调试时候,CCC的值始终有很多\0\0\
我把bbb开小点,\0\0\0会有所减少,但是我必须要把数组元数开够呀.虽然不影响输出结果,但是我程序中有对收到字符串的判断,判断CCC的值.
现在假如判断CCC=="A"
我就得在程序里写if (ccc==a\0\0\0\0\0.....)
这样弄得好郁闷哟,为什么多了这么多\0出来,文本框输出的字符串却正常. Encoding.UTF8;Encoding.ASCII;Encoding.Unicode;我都试过了,还是一个样子.这些字节与字符串的相互转换函数,我都单独测试过都没问题,但是一拿进SOCKET收发的时候,收的数据就会加很多\0
int i;
i=aaa.Receive(bbb, bbb.Length, 0);
string ccc = System.Text.Encoding.BigEndianUnicode.GetString(bbb,0,i);
不过你的Receive方法,后面两个参数写反了吧?