none
2個陣列要如何比較它們是否一樣? RRS feed

  • 問題

  • 假設兩個一維 Byte 陣列 A(3), B(3),要如何比較它們的所有內容是否一樣

    我試過 A = B 與 A Is B 都不對耶~

    目前我是用回圈一個一個元素比較

    Code Snippet
    For i = 0 To 3
        If A(i) <> B(i) Then Exit For
    Next
    MsgBox(i > 3)

     

    有沒有更快的方式呢,還是只能用回圈?

     

    謝謝唷~


    2008年3月15日 上午 06:58

解答

  • 不然利用 BitConverter 也是可以啦..

    byte[] b1 = { 0x01, 0x02, 0x03 };
    byte[] b2 = { 0x01, 0x02, 0x03 };
     
    if (BitConverter.ToString(b1) == BitConverter.ToString(b2))
    {
        MessageBox.Show("The same");
    }
    else
    {
        MessageBox.Show("Different");
    }

    2008年3月16日 上午 08:22

所有回覆

  • 參考:如何:使用 C# .NET 計算和比較雜湊值

    比較兩個位元組陣列最簡單的方式,就是以迴圈方式對陣列中每一個別元素,逐一與另一個陣列中的值比較。如果有任何元素不相同,或者兩個陣列的大小不同,兩個陣列值就不會相等。


    Code Snippet
    bool bEqual = false;
    if (tmpNewHash.Length == tmpHash.Length)
    {
        int i = 0;
        while ((i < tmpNewHash.Length) && (tmpNewHash[i] == tmpHash[i]))
        {
            i += 1;
        }
        if (i == tmpNewHash.Length)
        {
            bEqual = true;
        }
    }
    2008年3月15日 上午 07:24
  • 呵~您怎麼知道我是要比較雜湊值~~

    嗯..我目前也是就陣列元素一個一個去比較

    只是想說除了一個一個比以外,不曉得有沒有更快的方式~

    2008年3月15日 上午 07:33
  • 不然利用 BitConverter 也是可以啦..

    byte[] b1 = { 0x01, 0x02, 0x03 };
    byte[] b2 = { 0x01, 0x02, 0x03 };
     
    if (BitConverter.ToString(b1) == BitConverter.ToString(b2))
    {
        MessageBox.Show("The same");
    }
    else
    {
        MessageBox.Show("Different");
    }

    2008年3月16日 上午 08:22
  • 咦~ 多學了一招~~

    非常謝謝大大的分享喔~~

     

     

    2008年3月16日 下午 02:44