Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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#如何将此的输出设置为字符串?_C#_Tcp - Fatal编程技术网

C#如何将此的输出设置为字符串?

C#如何将此的输出设置为字符串?,c#,tcp,C#,Tcp,这是我的tcp客户端的一段代码。本部分将接收的字节转换为字符。但是,我想给它添加一些逻辑,要做到这一点,我需要将此输出设置为字符串。因为它一直单独打印每个字符,我该怎么做?如果您需要更多信息,请随时询问 byte[] bb = new byte[100]; int k = stm.Read(bb, 0, 100); for (int i = 0; i < k; i++) Console.Write(Convert.ToChar(bb[i])); byte[]bb=新字节[100];

这是我的tcp客户端的一段代码。本部分将接收的字节转换为字符。但是,我想给它添加一些逻辑,要做到这一点,我需要将此输出设置为字符串。因为它一直单独打印每个字符,我该怎么做?如果您需要更多信息,请随时询问

byte[] bb = new byte[100];
int k = stm.Read(bb, 0, 100);

for (int i = 0; i < k; i++)
  Console.Write(Convert.ToChar(bb[i]));
byte[]bb=新字节[100];
intk=stm.Read(bb,0100);
for(int i=0;i

谢谢你

根据注释,如果您想在特定编码中解码字节数组,只需使用。例如:

string str = "";
foreach (byte b in bb) str += Convert.ToChar(b);
Console.Write(str);
string text = Encoding.ASCII.GetString(bb, 0, k);

(请注意,如果文本是任意人类文本,ASCII很少是一个好的选择。在这一点上,UTF-8通常是一个更好的选择,但您需要记住一个字符可能被拆分为多个字节,因此需要多次调用
Stream.Read

首先,您希望采用什么编码?例如,您可以使用
string text=Encoding.ASCII.GetString(bb,0,k)
,但如果不是ASCII,就不能使用……这是一种效率极低的方法。看@JonSkeet,这可能是一种可怕的方式。然而,它似乎已经达到了我的要求。非常感谢。James@JoshuaHodson当前位置很多事情都可能奏效,但这不是一个好主意。最好尽早发现这一点,尤其是对于像这样的性能问题,您可能会发现在小测试中这一点很好,但在更大的情况下,您会放松它,服务器就会停止运行。除了性能之外,我认为这根本不是将二进制数据转换为文本的惯用方式。@JoshuaHodson:从一个初学者到另一个初学者(可能是?),欢迎你。考虑到这个问题当时还没有答案,功能性答案可能比最佳答案更糟糕,但总比没有好。