请记住,我没有太多的编码经验。
我在访问数组时遇到了问题。我正在使用一个返回数组的函数创建数组,这是一个例子:
int[] ArrayName = ReturnArray(string);
所以现在ArrayName已经创建,它应该与ReturnArray返回的内容相同,不是吗?
我设置了一个断点:
int[] ArrayName = ReturnArray(string);
我可以看到ArrayName创建正确。
当我尝试只访问数组的1个值时,如下所示:
print(ArrayName[0]);
它应该只返回数组中的第一个值,对吗?其实不是!它返回一个以上的值,并且这些值甚至与返回的ReturnArray(string)不匹配
下面是“returnArray”函数:
public static int[] ReturnArray(string t)
{
int i,ii,;
string ba;
string base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
List<int> list = new List<int>();
for (i = 0; i < t.Length;i++)
{
ba = t.Substring(i, 1);
ii = base64.IndexOf(ba) * 64;
list.Add(ii);
}
return list.ToArray();
}
添加了更多的代码来执行来自注释的响应
private void outputLoop()
{
int i = 0;
for (i = 0; i < 63; i++)
{
int te = lines[i].Length - 128;
string tes = lines[i].Substring(te, 64);
int[] ArrayName = ReturnArray(tes);
_textlayer.DrawString(_font, ArrayName[i].ToString(), new Vector2(1100, i * 15), Color.White);
}
}
null
static void Main( string[] args ) {
// declare a variable and assign it to the return value of ReturnArray()
var arr = ReturnArray( "foo" );
// get the first value in the array
var first = arr[0];
}
public static int[] ReturnArray( string t ) {
int i, ii;
string ba;
string base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
List<int> list = new List<int>();
for( i = 0; i < t.Length; i++ ) {
ba = t.Substring( i, 1 );
ii = base64.IndexOf( ba ) * 64;
list.Add( ii );
}
return list.ToArray();
}
首先,如果你想做一个基64算法,它已经在框架中完成了。如果你想要学习,那很好,但是有很多例子可以继续学习。
ii = base64.IndexOf( ba ) * 64;
其次,您的代码确实返回了我所期望的结果,即来自
这个小例子为“foo”生成
“aaa”产生
正如您所期望的那样,“bbb”产生
更多调试代码(基于注释):
int[] arr = ReturnArray( "DADBALAMANAOAAABAYAZAaAbAcAdAeAff/BIBJBKBLBMBNBOBJBKBLBMBNBOBPf/AAABAoApAqArAsAtAuAvf/f/+4+5f/f/f/AAABf/B4B5B6DQAZAaAbAcAdAeAZAa" );
// should print "192"
System.Diagnostics.Debug.WriteLine( arr[0] );