none
將十六進位轉十進位 RRS feed

  • 問題

  •             string[] Split = str.Split('-');
                for (int i = 0; i < Split.Length - 4; i += 7)
                {
                    string nc,nd; 
                    //string nd;
                    if (Split[i] == "FF" && Split[i + 1] != "FF")
                    {
                        nc = Split[i + 3] + " ";   >>>我拆解出我要的數據

                        int value = Convert.ToInt32(nc, 10);  >>我要將他轉成十進制
                        string str1 = value.ToString();   >>轉成String在SetText顯示
                        SetText(str1);
                    }
    }

    但是發生一些錯誤,錯誤顯示為字元不能再字串尾部份,因為我將nc宣告為string>>這一行是為一個Unicode字元

    之後我將轉換成十進位部分程式改寫成下面
       char[] na = nc.ToCharArray();
                        foreach (char ne in na)
                        {
                            int value = Convert.ToInt32(ne);
                            string str1 = value.ToString()+"-";
                            SetText(str1);
                        }
    解出來是錯的不是所要的數值,想請教大家哪裡寫錯了
    2010年7月6日 上午 10:08

解答

  • Hi,

     

      string[] Split = str.Split('-');
      for (int i = 0; i < Split.Length - 4; i += 7)
      {
      string nc, nd;
      //string nd;
      if (Split[i] == "FF" && Split[i + 1] != "FF")
      {
       nc = Split[i + 3];
    
       int value = Convert.ToInt32(nc, 16);
       string str1 = value.ToString();
       SetText(str1);
      }
      }

     

     


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 Lolota Lee 2010年7月12日 上午 02:11
    2010年7月6日 上午 10:45

所有回覆

  • Hi,

     

      string[] Split = str.Split('-');
      for (int i = 0; i < Split.Length - 4; i += 7)
      {
      string nc, nd;
      //string nd;
      if (Split[i] == "FF" && Split[i + 1] != "FF")
      {
       nc = Split[i + 3];
    
       int value = Convert.ToInt32(nc, 16);
       string str1 = value.ToString();
       SetText(str1);
      }
      }

     

     


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    • 已標示為解答 Lolota Lee 2010年7月12日 上午 02:11
    2010年7月6日 上午 10:45
  •  (1)    int value = Convert.ToInt32(nc, 10);  >>我要將他轉成十進制

    你的nc應該是看起來像16進位的字串吧 ? (ex: F0, FF, A0, BC之類的)

    Convert.ToInt32 方法 (String, Int32) 在參數的說明是這樣的

    參數

    value
    型 別:System. . :: . String
    含有數字的 String
    fromBase
    型別:System. . :: . Int32
    value 中數字的基底,必須是 2、8、10 或 16。

    所以你的基底是16而不是10. 這意謂基底的意義是代表你所傳入的Value本身是哪個進位類型的字串,

    傳回值

    型別:System. . :: . Int32
    32 位元帶正負號的整數,與 value 中的數字相等。
    -或-
    如果 valuenull Nothing nullptr Null 參照 (即 Visual Basic 中的 Nothing ) ,則為零。

    傳回值就是Int32, 一般的表示法即為10進位.

    不要把基底和回傳弄混

    (2)  int value = Convert.ToInt32(ne);

    此時ne型別是Char. 當Convert.ToInt32的傳入值型態為Char時. 回傳的值則是該字元的UTF-16編碼

    Convert. . :: . ToInt32 方法 (Char)

    將指定的 Unicode 字元值轉換為相等的 32 位元帶正負號的整數。

    參數

    value
    型別:System. . :: . Char
    Unicode 字元。

    傳回值

    型別:System. . :: . Int32
    等於 value 的 32 位元帶正負號的整數。
     備註

    ToInt32(Char) 方法會傳回 Int32 值,這個值表示 value 參數的 UTF-16 編碼字碼指標。

    PS: 同名的方法多載, 並不意味著所有多載遵照相同的模式在處理, 讀文件是一件重要的事, 所以要記得多看文件.

     



    以下是簽名檔, 請勿沒事對號入座
    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年7月6日 上午 11:03
    版主
  • 謝謝各位的提醒,那可能是之前我不小心測是沒有換回來沒有注意到

    因為先前我有用過 int value = Convert.ToInt32(nc, 16);方式

    因為還是不行 是否可以請教一下字元轉int的方式嗎?

    想說因為程式說string nc已經為一個Unicode字元形式了

    因為string split(char[])方式

    所以我有用char程式來寫,但是解出來的十進位好像不太對  

    因為我有將之前的十六進位用手算過

    所以想請教一下大家  謝謝

     

    2010年7月7日 上午 02:57
  •             string str1;
                string[] Split = str.Split('-');
                for (int i = 0; i < Split.Length - 4; i += 7)
                {
                    string nc;
                    if (Split[i] == "FF" && Split[i + 1] != "FF")
                    {
                        nc = Split[i + 3];
                        int value = Convert.ToInt32(nc, 16);
                        str1 += value.ToString() + "-";
                    }
                }
                SetText(str1);

    不要蒙著頭,亂試一通,蹂躪大的程式已是正解,有試過嗎...


    2010年7月7日 上午 03:16
  • 想說因為程式說string nc已經為一個Unicode字元形式了

    因為string split(char[])方式

    所以我有用char程式來寫,但是解出來的十進位好像不太對  

    因為我有將之前的十六進位用手算過

    所以想請教一下大家  謝謝

     

    ToInt32(Char) 方法會傳回 Int32 值,這個值表示 value 參數的 UTF-16 編碼字碼指標。

    這行說明得還不夠清楚嗎 ? 它回傳的是該Value的UTF-16編碼字碼指標 , 當你的CHAR是'A'這個字元, 它回傳的是'A'的ASCII Code的值, 而不是10


    以下是簽名檔, 請勿沒事對號入座
    MSDN 文件庫很重要
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上
    2010年7月7日 上午 03:38
    版主
  • 有 我有試過了= = 

    一樣的錯誤形式

    我會去再看看其他方法

    謝謝

    2010年7月7日 上午 07:44