从byte[]变量创建字符串(c#)
本文关键字:字符串 创建 变量 byte | 更新日期: 2023-09-27 18:18:18
我试图在以下上下文中从" Convert.ToChar(b[i])
"创建一个变量或字符串:
byte[] b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("Recieved...");
for (int i = 0; i < k; i++)
Console.Write(Convert.ToChar(b[i]));
例如:
var str = Convert.ToChar(b[i]);
但以上不起作用,因为"i
"是not defined within the current context
这只是for循环没有被给予足够的范围的情况吗?
byte[] b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("Recieved...");
for (int i = 0; i < k; i++)
{
Console.Write(Convert.ToChar(b[i]));
var myVariable = Convert.ToChar(b[i]);
}
注意,如果不包含花括号,for循环将只具有它下面第一行的作用域,因此var = Convert.ToChar(b[i]);
行将无法访问循环作用域中的i
变量。
这就是为什么我总是确保在循环代码中加上花括号的原因,即使它是在循环中的单行-这样很容易跟踪循环的范围
你的意思很不清楚,但听起来你可能想要:
byte[] b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("Received...");
string text = Encoding.ASCII.GetString(b, 0, k);
请注意,ASCII不是这里唯一可能的编码-正确使用的编码将取决于您使用的协议规定。
这是因为i只存在于for
循环中。尝试将所有值添加到数组中,然后从中访问特定项。
在你的例子中,因为你想在你的代码中创建一个字符串,你可以使用StringBuilder来创建字符串。例如:
StringBuilder a = new StringBuilder();
a.Append(Convert.ToChar(b[i]);
string str = a.ToString();
或者在你的例子中是:
byte[] b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("Recieved...");
StringBuilder a = new StringBuilder();
for (int i = 0; i < k; i++)
{
a.Append(Convert.ToChar(b[i]);
}
string str = a.ToString();