如何将字节转换为字符?我的意思不是 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();
one.ToString(); // one.ToString()[0] - first char -'1'
two.ToString(); // two.ToString()[0] - first char -'2'
请注意,您无法真正将
byte
转换为 char
char
是一个字符,而字节甚至可以是三位数字!
如果你想使用
LINQ
并且你确定字节不会超过一位数字(10+),你可以使用这个:
number.ToString().Single();
只需使用
variable.ToString()
就足够了。如果你想变得更奇特,可以在转换之前将 0
的 ASCII 代码添加到变量中:
Convert.ToChar(variable + Convert.ToByte('0'));
用它进行转换。
(char)(mybyte + 48);
其中
mybyte
= 0 或 1 等等
或
Convert.ToChar(1 + 48); // specific case for 1
虽然其他人已经给出了解决方案,但我会告诉你为什么你的
(char)1
和 Convert.ToChar(1)
不起作用。
当您将字节 1 转换为 char 时,它将
1
作为 ASCII
值。
现在
ASCII of 1 != 1
。
在其中添加 48,因为 ASCII 为 1 == 1 + 48`。 0、2 等类似情况。
假设你有变量
byte x;
只需使用(char)(x + '0')
使用 Convert.ToString() 来执行此操作。
如果结果必须是 Char (而不是字符串),一个明显且简单的解决方案是:
"0123456789"[yourByte]