2012-05-18 108 views
1

如何将字节转换为字符?我不是指ASCII的表示。 我有一个byte类型的变量,并希望它作为一个字符。如何将字节转换为字符,例如1 - >'1'?

欲只是以下从字节转换为char:
0 - > '0'
1 - > '1'
2 - > '2'
3 - > '3'
4 - > '4'
5 - > '5'
6 - > '6'
7 - > '7'
8 - > '8'
9 - > '9'

(char)1Convert.ToChar(1)不起作用。他们导致'',因为他们认为1是ASCII码。

+3

'1.ToString()[0]'? –

+1

它只有一个数字吗? –

+0

@TuTran是的。在我的情况下,字节变量只是0到9之间的单个数字。 – brgerner

回答

4

数量.ToString();

one.ToString(); // one.ToString()[0] - first char -'1' 
two.ToString(); // two.ToString()[0] - first char -'2' 

请注意,你不能真正转换bytechar
char是一个字符,而字节甚至可以三位数的价值!


如果你想使用LINQ和你一定字节不会超过个位数(10+),您可以使用此:

number.ToString().Single(); 
+0

我不敢相信这个问题上有太多令人费解的答案,他们得到的分数比这个高! – weston

+0

@gdoron对你的提示的评论:在我的情况下可以,因为我只有一位数字。所以**在我的情况**可以写:'one.ToString()[0]'或@ JeppeStigNielsen的提示'one.ToString()。Single()'。 – brgerner

+0

@weston。谢谢......至少它被接受了。 ':'' – gdoron

4

只需使用variable.ToString()就足够了。如果你想获得幻想,在转换之前加0到变量的ASCII码:

Convert.ToChar(variable + Convert.ToByte('0')); 
+0

如何将字节转换为字符? 10+值呢? – gdoron

+0

@gdoron:通过将字节的值当作BMP中字符的序数当然。这个问题清楚地表明,我们对10个以上的价值不感兴趣。 – Jon

2

使用Convert.ToString()来执行此操作。

+0

为什么'convert.ToString()'而不仅仅是'.Tostring()'...':)' – gdoron

+1

'byte'如何能成为'null'?它是一个'struct'。从** MSDN ** _“此实现与Byte.ToString()相同。”_ [source](http://msdn.microsoft.com/en-us/library/9b4d9sx5.aspx) – gdoron

+0

+1这个解释。 –

3

假设你有变量byte x; 只需使用(char)(x + '0')

+0

'x'是一个'字节'。正如你所评论的,当我大于9时x会发生什么?你会得到一些ascii代码。 – gdoron

+0

@gdoron:抱歉使用int,但作者说它只是0到9,所以你提到的情况不会发生 –

3

将其用于转换。

(char)(mybyte + 48); 

其中mybyte = 0或1等

OR

Convert.ToChar(1 + 48); // specific case for 1 

虽然别人给予解决方案,我会告诉你为什么你(char)1Convert.ToChar(1)是行不通的。

当您将字节1转换为字符时,将1作为ASCII的值。

现在ASCII of 1 != 1

在其中添加48,因为1 == 1 + 48的ASCII。类似的情况下为0,2等等。

相关问题