烙铃酱 2024-11-07 11:23 采纳率: 0%
浏览 4
问题最晚将于11月15日00:00点结题

输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?

c#

1.输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?

2.或者使输入的char字符可以正常与其他字符比较(如输入的char变量为v='d',判断v=='d'结果如何为真)?
例:d=65348
(v=='d')=false

3.这个属于什么方面的问题?


            char v = Console.ReadKey().KeyChar;
            bool b = (v == 'd');
            Console.WriteLine(b);
            int vt = Convert.ToInt32(v);
            Console.WriteLine(vt);

注:图有点问题看代码好了
应该是输入法的锅windows默认的输入法,换成旧版就好了。,

  • 写回答

14条回答 默认 最新

  • 专家-皆知 2024-11-07 11:24
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    根据您的描述,您遇到的问题可能源于特殊字符的处理或编码理解。在C#中,默认情况下,charint的转换确实会得到ASCII或Unicode码值,对于基本的英文字符集,这通常与ASCII码一致。如果您的输入显示转换结果不匹配期望的ASCII码,可能是由于读取的是一个非基本ASCII字符,或者是键盘输入的特殊处理导致。

    解决方案

    1. 确保正确的ASCII比较:对于标准的英文字符,直接比较char变量应该是直接有效的。如果v == 'd'返回falsevt打印出一个不寻常的数字,这可能是因为输入的字符不是预期的ASCII 'd'。请确认输入。

    2. 查看字符编码:如果输入的是Unicode字符,Convert.ToInt32(v)会返回该字符的Unicode码点,而不是ASCII码。ASCII码只覆盖从0到127的字符。确保您的比较是基于正确的字符集。

    修正代码

    您的代码看起来基本正确,适用于比较标准ASCII字符。如果遇到不寻常的码值,确保环境和输入的字符如预期。以下是您代码的确认版,它应该正常工作于标准ASCII字符:

    char v = Console.ReadKey().KeyChar;
    bool isMatch = (v == 'd'); // 正确的比较方式
    Console.WriteLine(isMatch);
    int vt = (int)v; // 直接转换,等同于Convert.ToInt32(v),对于ASCII范围内的字符,这将给出ASCII码
    Console.WriteLine(vt);
    

    这段代码首先读取一个字符,然后尝试与字符'd'进行比较,并输出比较结果以及字符的整数值。在标准情况下,如果输入字符确实是'd',则isMatch应为true,且vt应为100,这是ASCII码中'd'的值。

    问题所属方面

    这个问题属于字符编码和C#基础数据类型转换的范畴。了解字符如何在不同的编码系统中表示,以及C#中charint转换的规则,对于解决这类问题至关重要。

    评论

报告相同问题?

问题事件

  • 修改了问题 今天
  • 修改了问题 今天
  • 创建了问题 今天

悬赏问题

  • ¥15 (标签-matlab)
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件
  • ¥15 K8S部署二进制集群过程中calico一直报错
  • ¥15 java python或者任何一种编程语言复刻一个网页
  • ¥20 如何通过代码传输视频到亚马逊平台
  • ¥15 php查询mysql数据库并显示至下拉列表中
  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信