Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ascii编码器.getString()返回1500长度_C#_String_Decode_Encode - Fatal编程技术网

C# Ascii编码器.getString()返回1500长度

C# Ascii编码器.getString()返回1500长度,c#,string,decode,encode,C#,String,Decode,Encode,我有一个基本的加密聊天。我正在尝试执行一个foreach(encryptedMessage中的char c),但长度总是1500。如何消除空字符?我已经尝试了trim() 此代码发送: 此代码接收: 这里的罪魁祸首可能是“发送”和“接收”部分,但您没有概述代码的这部分是如何工作的。如果你把1500个字节解码成字符,你会得到1500个字符,这一点也不奇怪。问题是,你收到1500字节了吗?是的,这是发送和接收部分,我将更新代码以便你能看到。请注意,我上面关于1500字节的评论将产生1500个字符,这

我有一个基本的加密聊天。我正在尝试执行一个
foreach(encryptedMessage中的char c)
,但长度总是1500。如何消除空字符?我已经尝试了
trim()

此代码发送:

此代码接收:


这里的罪魁祸首可能是“发送”和“接收”部分,但您没有概述代码的这部分是如何工作的。如果你把1500个字节解码成字符,你会得到1500个字符,这一点也不奇怪。问题是,你收到1500字节了吗?是的,这是发送和接收部分,我将更新代码以便你能看到。请注意,我上面关于1500字节的评论将产生1500个字符,这与你使用ASCII编码有关。任何未来的访客都应该注意到,其他编码器将不会提供这种保证。诚恳地说,我对聊天项目是新手,所以我不知道。如何解决此问题?此注释可能与您的情况无关,但一般来说,最好不要使用ASCII作为传输字符集。C#和.Net(以及Java)基于Unicode,世界越来越小,因此当使用非英语语言的人试图使用您的程序时,限制自己使用ASCII字符可能会成为一个问题。甚至是使用英语但名字中带有重音字母的人,或者在世界其他地方试图正确拼写城市名称的人。推荐用于传输字符的字符集现在是(多年来一直是)UTF-8。
 byte[] msg = new byte[1500];
 [....]
 System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
 msg = enc.GetBytes(encryptedString);
 sck.Send(msg);
 byte[] buffer = new byte[1500];
 sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);
 byte[] recievedData = new byte[1500];
 recievedData = (byte[])aResult.AsyncState;
 //Converting byte[] to string
 ASCIIEncoding eEncoding = new ASCIIEncoding();
 string encrytedMessage = eEncoding.GetString(recievedData);
 foreach(char c in encryptedMessage)
 {
    [....]
 }
 byte[] buffer = new byte[1500];

 sck.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epRemote, new AsyncCallback(MessageCallBack), buffer);