You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中如何将int转换为字符字面量而非Unicode表示?

如何把整数3转换成字符'3'而不是Unicode控制字符?

你遇到的问题其实是对字符编码的误解啦——直接把int的3转char,得到的是Unicode编码为3的控制字符(也就是\u0003,对应End of Text控制符),而字符'3'本身的Unicode编码是十进制的51(十六进制0x33),这俩完全不是一回事。

给你几个简单的解决方法:

  • 方法一:利用字符编码的连续性(推荐,效率最高)
    字符'0'到'9'的Unicode/ASCII编码是连续的,从48('0')一直到57('9')。所以只要给你的整数加上'0'的编码值,就能得到对应的数字字符:

    int i1 = 3;
    char c1 = (char)(i1 + '0');
    Console.WriteLine(c1); // 输出 '3'
    

    这个方法只适用于0-9的整数,如果你要转换的整数是这个范围,用它准没错。

  • 方法二:通过字符串中转
    先把整数转成字符串,再取第一个字符(适合单数字整数):

    int i1 = 3;
    char c1 = i1.ToString()[0];
    Console.WriteLine(c1); // 输出 '3'
    

    要是你的整数是多位数(比如123),这个方法会取字符串的第一个字符'1',所以用的时候要注意场景。

  • 方法三:直接指定Unicode编码
    如果你记得数字字符的编码,也可以直接计算:

    int i1 = 3;
    char c1 = (char)(48 + i1); // 48是'0'的编码
    Console.WriteLine(c1);
    

    本质和方法一一样,只是把'0'换成了它的十进制编码值而已。

内容的提问来源于stack exchange,提问作者Birdman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:31:28