我正在尝试将 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);
最佳答案
在 i = 13
处,当 j = 0
时,发生的情况是:
PC2_table[j] = PC2_table[0] = 13
并且i
是13
,因此您进入if
block :
if(PC2_table[j] == i){ //enters
}
但是:
ini[j] = ini[0] = " ";
是一个空格
,因为:
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 个索引中添加了您的空间:
关于c# - 我不知道为什么我在 temp 的索引 13 处得到 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36574473/