none
陣列顯示在Richtext內 RRS feed

  • 問題

  • 各位大大,想請教如果我有128 KB的Data

    我想要顯示在Richtext內,For迴圈去顯示太久,foreach也須執行非常久

    看是否有甚麼更好方法去顯示?

    foreach (int a in buffer_AAA)/*128 Kb/ 131072 Bytes*/
                {
                    if (buffer[a].ToString("X").Length == 0)
                    {
                        richTextBox2.Text += "0x00" + buffer[a].ToString("X");
                    }
                    else if (buffer[a].ToString("X").Length == 1)
                    {
                        richTextBox2.Text += "0x0" + buffer[a].ToString("X");
                    }
                    else if (buffer[a].ToString("X").Length == 2)
                    {
                        richTextBox2.Text += "0x" + buffer[a].ToString("X");
                    }
    
                    richTextBox2.Text += " , ";
                }


    • 已編輯 愷愷 2019年12月4日 上午 08:08 註解
    2019年12月4日 上午 08:07

解答

  • var str = new StringBuilder();
    foreach (int a in buffer_AAA)
    {
        str.Append("0x");
        str.Append(buffer[a].ToString("X2"));
        str.Append(" , ");
    }
    str.Remove(str.Length - 3, 3);
    richTextBox2.Text = str.ToString();
    • 已標示為解答 愷愷 2019年12月4日 上午 11:05
    2019年12月4日 上午 09:42
  • 你可以用 google 找相關字串相加的效能比較文章看。

    你用的方法是已知最慢。

    我會建議你開個字串陣列,直接把 byte 轉字串陣列後,再用 Join 來調整。

    至於轉換 16 進位前面補零的,可以參考官方文件:

    https://docs.microsoft.com/zh-tw/dotnet/standard/base-types/how-to-pad-a-number-with-leading-zeros


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 愷愷 2019年12月5日 上午 03:37
    2019年12月4日 下午 03:24

所有回覆