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#中进行这样的转换?
答案 0 :(得分:5)
在转换为48
之前,将int
添加到char
值:
char c = (char)(i + 48);
或int[]
- > char[]
转化:
var source = new int[] { 1, 2, 3 };
var results = source.Select(i => (char)(i + 48)).ToArray();
它有效,因为ASCII table中的'0'
字符值为48
。但只有当int
值介于0
和9
之间时,它才有效。
答案 1 :(得分:0)
var yourInts = new int[]{1,2,3};
var result = yourInts.Select(x=>x.ToString()[0]).ToArray();
答案 2 :(得分:0)
如果您确定该值在0 .. 9范围内(包括两者),则可以使用按位或代替加法来稍微提高效率:>
(char) ('0' | i);
这是可行的,因为'0'
具有二进制代码点0011 0000
,十位数字都在0011 0000
和0011 1001
之间。
您可以使用以下方法将IEnumerable<int>
转换为IEnumerable<char>
:
data.Select(i => (char) ('0' | i));
答案 3 :(得分:0)
这应该有效: (char) (i + '0')
示例: 变量 i = 8; var c = (char) (i + '0');//给出'8'