我尝试将 ini 字符串重新排列为temp
,外部循环用于temp
中的字符数,内部循环用于查找索引号PC2_table
并将角色ini[j]
追加到temp
,一切正常,但我不知道为什么我在索引13处什么都没有。
string ini = "000100010000110011110100001001101001001110101101";
Console.WriteLine(ini.Length + " " +ini[0]);
int[] PC2_table = { 13 , 16 , 10 , 23 , 0, 4,
2 , 27 , 14 , 5 , 20, 9,
22 , 18 , 11 , 3 , 25, 7,
15 , 6 , 26 , 19 , 12, 1,
40 , 51 , 30 , 36 , 46, 54,
29 , 39 , 50 , 44 , 32, 47,
43 , 48 , 38 , 55 , 33, 52,
45 , 41 , 49 , 35 , 28, 31};
ini = " " + ini; // because PC2 table main indexing 1 sy hai
string temp = null;
for (int i = 0; i < 56; i++)
{
for (int j = 0; j < PC2_table.Length; j++)
{
if(PC2_table[j] == i)
{
Console.WriteLine(i + " " +j + " " + ini[j] );
temp += ini[j];
break;
}
}
}
Console.WriteLine(temp);
答案 0 :(得分:2)
在i = 13
,当j = 0
时,会发生什么:
PC2_table[j] = PC2_table[0] = 13
且i
为13
,因此您输入if
块:
if(PC2_table[j] == i){ //enters
}
可是:
ini[j] = ini[0] = " ";
space
是否由于:
string ini = "000100010000110011110100001001101001001110101101";
...
ini = " " + ini; //note the addition of " " in front of original ini
请注意,现在ini
是:
" 000100010000110011110100001001101001001110101101" //the first element at index [0] is " "
你这样做:
temp += ini[j]; //"1000001100110" + " " = "1000001100110 " //additional space
因此,您在第13个索引中添加了空间:
答案 1 :(得分:1)
您正在执行声明
ini = " " + ini;
所以你ini的第一个字符是空的。 然后你有i = 13和j = 0的组合,程序试图访问ini的位置0,所以他将返回你的空白区域。 所以你应该修改索引。
无论如何,我对这项计划无论如何都没有了解。
答案 2 :(得分:1)
你在索引13得到0,因为PC2_table[0]
是13,在这种情况下j
等于0
。