将double转换为int数组

时间:2015-04-18 19:39:54

标签: c# arrays

我试图将来自我的TextBox的每个字母与我的数组中的每个值进行异或。 问题是,当我将double转换为int数组时,我的int数组result只存储一个值。

如果我运行我的代码,我会得到第一个字母XORed,但如果我输入的内容超过一个,我会收到消息:

  

System.IndexOutOfRangeException:索引超出了数组的范围。

我已经尝试过创建一个类似于int[] result = new int[] {1,2,3,4,5,6,7};的int数组,而且我对XORing最多7个字母没有任何问题。

        private void iTalk_Button_12_Click(object sender, EventArgs e)
        {

            ambiance_RichTextBox1.Text = XorText(ambiance_RichTextBox1.Text);
        }
        private string XorText(string text)
        {

            string newText = "";
            double r = 3.9;
            double[] first_value = new double[text.Length];
            double[] to_int_array = new double[text.Length];
            for (int i = 0; i < text.Length; i++)
            {
                double get_first = r * i * (1 - i);
                int index = (int)(i * text.Length);
                first_value[index] = get_first;
            }

            for (int i = 0; i < text.Length; i++)
            {

                int xnbb = 0;
                if (first_value[i] > Math.Exp(Math.Log(2) * (-i)))
                {
                    double get_first = first_value[i] - Math.Exp(Math.Log(2) * (-i));
                    xnbb = 1;
                }

                double array_of_values = xnbb + 1 * Math.Round(Math.Exp(Math.Log(2) * (24 - i)));

                int index = (int)(i * text.Length);
                to_int_array[index] = array_of_values;
                int[] result = new int[] { Convert.ToInt32(to_int_array[i]) };


                int charValue = Convert.ToInt32(text[i]);
                charValue ^= result[i]%320;
                newText += char.ConvertFromUtf32(charValue);
            }
            return newText;  
        }

2 个答案:

答案 0 :(得分:1)

        double[] first_value = new double[text.Length];
        ... 
        for (int i = 0; i < text.Length; i++)
        {
            double get_first = r * i * (1 - i);
            int index = (int)(i * text.Length);
            first_value[index] = get_first;
        }

当文本长度为2时,first_value索引可以从0..1开始运行。我将从0循环到1.计算的索引变为1 x 2 = 2,这超出了索引范围。

答案 1 :(得分:1)

将带有2个字符的字符串传递给XorText时,会在此行中抛出System.IndexOutOfRangeException:

 first_value[index] = get_first;

因为第二次执行循环体时索引为2

 int index = (int)(i * text.Length);

你真的应该考虑学习如何使用调试器。它将使编程更容易。