2011-03-09 115 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 
      }