1

Mabby 这是一个愚蠢的问题,但我怎样才能将 int 类型的数字转换为 char 类型的数字?

标准转换 OP 不这样做:

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'

我需要这个,因为我有一个返回IEnumerable的方法,我需要以某种方式 Char返回一个集合。ints

例如:

int[] {1, 2, 3}  

转换成

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

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

4

4 回答 4

8

在转换为之前增加48您的价值:intchar

char c = (char)(i + 48);

或者对于int[]->char[]转换:

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

它有效,因为ASCII 表'0'中的字符具有价值。但只有当您的值介于和之间时,它才会起作用。48int09

于 2013-08-31T19:43:13.297 回答
0
var yourInts = new int[]{1,2,3};
var result = yourInts.Select(x=>x.ToString()[0]).ToArray();
于 2013-08-31T19:41:43.033 回答
0

如果您确定这些值在 0 .. 9 范围内(包括两者),则可以通过使用按位或代替加法来稍微提高效率:

(char) ('0' | i);

这有效,因为'0'它具有二进制代码点0011 0000,因此十位数字都在0011 0000和之间0011 1001

因此,您可以将 an 转换IEnumerable<int>IEnumerable<char>with:

data.Select(i => (char) ('0' | i));
于 2020-10-22T19:16:53.753 回答
0

这应该有效:(char) (i + '0')

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

于 2021-06-03T23:39:01.007 回答