如何将字节转换为字符,例如1 -> '1'?

问题描述 投票:0回答:6

如何将字节转换为字符?我的意思不是 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 代码。

c# char byte
6个回答
5
投票

数字

.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();

4
投票

只需使用

variable.ToString()
就足够了。如果你想变得更奇特,可以在转换之前将
0
的 ASCII 代码添加到变量中:

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

4
投票

用它进行转换。

(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 等类似情况。


3
投票

假设你有变量

byte x;
只需使用
(char)(x + '0')


2
投票

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


0
投票

如果结果必须是 Char (而不是字符串),一个明显且简单的解决方案是:

"0123456789"[yourByte]
© www.soinside.com 2019 - 2024. All rights reserved.