C# 在c语言中如何在不丢失数字值的情况下将int数字转换为char#

C# 在c语言中如何在不丢失数字值的情况下将int数字转换为char#,c#,type-conversion,C#,Type Conversion,Mabby这是一个愚蠢的问题,但我如何将int类型的数字转换为char类型的数字呢 标准转换OPs不能做到这一点: int x = 5; char myChar = Convert.ToChar(5); // myChar is now a unicode character char secondChar = (char)x; // again I get a unicode character, not a digit '5' 我之所以需要它,是因为我有一个返回Char的IEnumerab

Mabby这是一个愚蠢的问题,但我如何将int类型的数字转换为char类型的数字呢

标准转换OPs不能做到这一点:

int x = 5;
char myChar = Convert.ToChar(5); // myChar is now a unicode character
char secondChar = (char)x; // again I get a unicode character, not a digit '5'
我之所以需要它,是因为我有一个返回
Char
IEnumerable
的方法,并且我需要以某种方式返回
int的集合

例如:

int[] {1, 2, 3}  
皈依

char[] {'1', '2', '3'}  

是否可以在C#中进行这种转换?

在转换为
char
之前,将
48
添加到
int
值中:

char c = (char)(i + 48);
或者对于
int[]
->
char[]
转换:

var source = new int[] { 1, 2, 3 };
var results = source.Select(i => (char)(i + 48)).ToArray();

它可以工作,因为中的
'0'
字符具有
48
值。但是,只有当您的
int
值介于
0
9
之间时,它才会起作用。在转换为
char
之前,将
48
添加到您的
int
值中:

char c = (char)(i + 48);
或者对于
int[]
->
char[]
转换:

var source = new int[] { 1, 2, 3 };
var results = source.Select(i => (char)(i + 48)).ToArray();

它可以工作,因为中的
'0'
字符具有
48
值。但只有当您的
int
值介于
0
9
之间时,如果您确实知道这些值在0中,它才会起作用。。9范围(包括两个范围),您可以通过使用按位或而不是加法来略微提高效率:

(char) ('0' | i);

如果您确实知道这些值位于0。。9范围(包括两个范围),您可以通过使用按位或而不是加法来略微提高效率:

(char) ('0' | i);
这应该起作用: (字符)(i+0')

例如: var i=8; var c=(char)(i+'0')//给出“8”

这应该可以: (字符)(i+0')

例如: var i=8;
var c=(char)(i+'0')//给出了“8”

为了清晰起见,如何使用
charc=(char)(i+'0')?@MatthewStrawbridge评论不错。这将使代码更具可读性!为了清楚起见,charc=(char)(i+'0')?@MatthewStrawbridge评论不错。这将使代码更具可读性!