当我尝试运行以下代码时,它总是吐出十六进制表示,而不是整数表示。我在MSDN上找到的大多数例子都说这应该有效。我错过了什么?
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”)方法,将其更改为Hex值。在我的调试环境中它是十六进制这一事实让我很困惑。
答案 0 :(得分:2)
您如何查看/显示该值?
'8'
字符肯定会转换为56.我怀疑您正在以十六进制格式查看数字,因为56(十进制)是38(十六进制)。您只需要以十进制格式查看数字。
答案 1 :(得分:2)
int既不是十六进制也不是十进制。这只是一个数字。您的调试器是否设置为显示整数的十六进制值?
答案 2 :(得分:0)
j是int
。 int总是二进制的。这是你以后如何展示它的另一个问题:)
答案 3 :(得分:0)
您使用的是十六进制显示吗? :)右键单击任何Watch面板,取消选中“十六进制显示”。
答案 4 :(得分:0)
我会尝试简单的转换为短或一个字节;这总是让我得到了正确的答案:
var stringBuilder = new StringBuilder("8");
int j = 0;
foreach (char item in stringBuilder.ToString())
{
j = (byte)item; //should return 56 as expected
}