最佳解答者
將十六進位轉十進位

問題
-
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);}解出來是錯的不是所要的數值,想請教大家哪裡寫錯了
解答
-
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
所有回覆
-
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
-
(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 中的數字相等。
-或-
如果 value 是 null 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 字元。
備註
ToInt32(Char) 方法會傳回 Int32 值,這個值表示 value 參數的 UTF-16 編碼字碼指標。
PS: 同名的方法多載, 並不意味著所有多載遵照相同的模式在處理, 讀文件是一件重要的事, 所以要記得多看文件.
以下是簽名檔, 請勿沒事對號入座
MSDN 文件庫很重要
回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上 -
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);
不要蒙著頭,亂試一通,蹂躪大的程式已是正解,有試過嗎...
-
想說因為程式說string nc已經為一個Unicode字元形式了
因為string split(char[])方式
所以我有用char程式來寫,但是解出來的十進位好像不太對
因為我有將之前的十六進位用手算過
所以想請教一下大家 謝謝
ToInt32(Char) 方法會傳回 Int32 值,這個值表示 value 參數的 UTF-16 編碼字碼指標。
這行說明得還不夠清楚嗎 ? 它回傳的是該Value的UTF-16編碼字碼指標 , 當你的CHAR是'A'這個字元, 它回傳的是'A'的ASCII Code的值, 而不是10
以下是簽名檔, 請勿沒事對號入座
MSDN 文件庫很重要
回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
進步的人會找尋自己程式中的缺點,半桶水則把自己程式的錯誤推到不相干事物的身上 -