请记住,我没有太多的编码经验......
我有问题访问数组。 我正在使用一个返回数组的函数创建数组,这是一个例子:
int[] ArrayName = ReturnArray(string);
现在已经创建了ArrayName,它应该与ReturnArray返回的内容相同吗?
我确定了一个断点:
int[] ArrayName = ReturnArray(string);
我可以看到ArrayName已正确创建。
当我尝试只访问数组的1个值时,这样:
print(ArrayName[0]);
它应该只返回数组中的第一个值吗?那不是! 它返回一个超过一个值,值甚至不匹配ReturnArray(字符串)返回
这是“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);
}
}
答案 0 :(得分:2)
这是一份工作样本。让我们解构。
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算法,那么它已经完成并且in the framework。如果你想学习,那很好,但有一些例子可以继续。
ii = base64.IndexOf( ba ) * 64;
其次,您的代码确实会返回我期望的内容,即来自IndexOf() * 64
的产品的数字数组。
这个小例子为“foo”产生1984, 2560, 2560
,而在索引0的值为1984。
“AAA”产生0, 0, 0
,因为IndexOf()是0 * 64。
正如您所料,“BBB”产生64, 64, 64
,因为IndexOf()返回1,并且它乘以64。
更多调试代码(基于评论):
int[] arr = ReturnArray( "DADBALAMANAOAAABAYAZAaAbAcAdAeAff/BIBJBKBLBMBNBOBJBKBLBMBNBOBPf/AAABAoApAqArAsAtAuAvf/f/+4+5f/f/f/AAABf/B4B5B6DQAZAaAbAcAdAeAZAa" );
// should print "192"
System.Diagnostics.Debug.WriteLine( arr[0] );