C# 如何将字节转换为字符,例如1->';1';?
如何将字节转换为字符?我不是指ASCII表示。 我有一个类型为C# 如何将字节转换为字符,例如1->';1';?,c#,char,byte,C#,Char,Byte,如何将字节转换为字符?我不是指ASCII表示。 我有一个类型为byte的变量,希望它作为一个字符 我只需要以下从字节到字符的转换: 0->“0” 1->“1” 2->'2' 3->'3' 4->'4' 5->'5' 6->'6' 7->'7' 8->'8' 9->‘9’ (char)1和Convert.ToChar(1)不起作用。因为他们认为1是ASCII码,所以产生'。只需使用变量。ToString()就足够了。如果您想获得更多乐趣,请在转换之前将0的ASCII码添加到变量中: Convert
byte
的变量,希望它作为一个字符
我只需要以下从字节到字符的转换:0->“0”
1->“1”
2->'2'
3->'3'
4->'4'
5->'5'
6->'6'
7->'7'
8->'8'
9->‘9’
(char)1
和Convert.ToChar(1)
不起作用。因为他们认为1
是ASCII码,所以产生'
。只需使用变量。ToString()
就足够了。如果您想获得更多乐趣,请在转换之前将0
的ASCII码添加到变量中:
Convert.ToChar(variable + Convert.ToByte('0'));
使用Convert.ToString()执行此操作。数字.ToString()代码>
请注意,您无法将字节
转换为字符
char
是一个字符,而byte甚至可以是三位数的值
如果要使用LINQ
,并且您确定字节不会超过一位(10+),则可以使用:
number.ToString().Single();
假设您有变量字节x代码>
只需使用(char)(x+'0')
将此用于转换
(char)(mybyte + 48);
其中mybyte
=0或1,依此类推
或
Convert.ToChar(1 + 48); // specific case for 1
当其他人给出解决方案时,我将告诉您为什么(char)1
和Convert.ToChar(1)
不起作用
当您将字节1转换为字符时,它将该1
作为ASCII
值
现在ASCII为1!=1
在其中添加48,因为ASCII值为1==1+48`。0、2等的情况类似。如何将字节转换为字符?那么10+的值呢?@gdoron:当然是将字节的值作为BMP中字符的序号。问题清楚地表明我们对10+值不感兴趣。为什么转换.ToString()
而不仅仅是.ToString()
<代码>:)
一个字节如何可以为空?它是一个结构
。在MSDN中,“此实现与Byte.ToString()相同”。x
是一个Byte
。正如你们所评论的,当xi大于9时会发生什么?您将得到一些ascii码。@gdoron:很抱歉使用int,但作者说它仅为0到9,所以您提到的情况不会出现occur@TuTran对在我的例子中,字节变量只是一个介于0和9之间的单个数字。@Cicada解决方案的一个变体:byteVariable.ToString().single()
——使用System.Linq
;如果变量超过9
@JeppeStigNielsen谢谢,我将使用Single()
-只是为了确定。我不敢相信在这个问题上有这么多复杂的答案,而且他们的分数比这个更高@gdoron对你的注释的评论:在我的情况下是可以的,因为我只有一个数字。因此,在我的例子中,可以这样写:one.ToString()[0]
或@JeppeStigNielsen的提示one.ToString().Single()
。byte
(System.byte
)不能有负值。这是一个sbyte
。
Convert.ToChar(1 + 48); // specific case for 1