2011-03-09 116 views
1

當我嘗試運行下面的代碼時,它總是吐出十六進制表示,而不是整數表示。我在MSDN上找到的大多數例子都表示這應該起作用。我錯過了什麼?將char轉換爲整數表示c#

   var stringBuilder = new StringBuilder("8"); 
       int j = 0; 
       foreach (char item in stringBuilder.ToString()) 
       { 
        j = Convert.ToInt32(item); //returns 38, need return to be 56 
       } 

編輯 我應該清楚,我知道它返回的十六進制值的差異。我將這個值輸出到一個文件中,在那個文件中,它仍然顯示十六進制值,而不是整數,所以我認爲它與調試環境沒有任何關係。

edit2看起來像一個PEBKAC問題。看着寫入文件的代碼,它使用.toString(「X」)方法,將其更改爲十六進制值。在我的調試環境中它是十六進制的這一事實讓我感到困惑。

+5

你的代碼給出了'56'。 – SLaks 2011-03-09 15:21:11

+0

當你說'吐出'你是在談論檢查調試器中的值?如果是這樣關閉十六進制編碼。 – Nick 2011-03-09 15:22:59

+0

如果您使用調試器看到的結果,改變調試器不顯示爲十六進制。 – vcsjones 2011-03-09 15:23:32

回答

2

int既不是十六進制也不是十進制。這只是一個數字。您的調試器是否設置爲顯示整數的十六進制值?

+0

實際上。不知道如何改變。這並不總是那樣。 – Dan 2011-03-09 15:39:41

2

您如何查看/顯示值?

'8'人物肯定會被轉換爲56.我懷疑你正在查看十六進制格式的數字,因爲56(十進制)爲38(十六進制)。您只需要以十進制格式查看數字即可。

0

j是int。一個int總是二進制的。這是另外一個問題,你是如何在以後顯示它:)

0

是否使用十六進制顯示? :)右鍵單擊任何監視面板並取消選中「十六進制顯示」。

0

我會嘗試一個簡單的轉換爲一個短或一個字節;總是得到了我正確的答案:

var stringBuilder = new StringBuilder("8"); 
      int j = 0; 
      foreach (char item in stringBuilder.ToString()) 
      { 
       j = (byte)item; //should return 56 as expected 
      }