我正在尝试在以下上下文中创建一个来自“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]));
E.g:
var str = Convert.ToChar(b[i]);
但上述内容不起作用,因为“i
”为not defined within the current context
答案 0 :(得分:4)
仅仅是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
循环范围中的变量。
这就是为什么我总是确保将花括号放在循环的代码中,即使它是循环中的单行 - 很容易跟踪循环的范围。
答案 1 :(得分:1)
那是因为我只存在于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();
答案 2 :(得分:1)
目前还不清楚你的意思,但听起来你可能想要:
byte[] b = new byte[100];
int k = s.Receive(b);
Console.WriteLine("Received...");
string text = Encoding.ASCII.GetString(b, 0, k);
请注意,ASCII不是唯一可能的编码 - 使用正确的编码将取决于您使用的协议所指示的。