sam-zy 2019-06-25 21:17 采纳率: 0%
浏览 3701

C语言char类型的123怎么转换成 int类型的123?

串口接受的数据是char类型的a ,要怎么转换为int类型并且值不变。

例如:

            char* a;
            int b;
            *a=SBUF;     //假如接收到的a的值是123 (也就是a=“123”也就是16进制的0x31 0X32 0X33 )

            /**
            *
            *这里要怎么写,其他能达到同样效果的方法也行
            *
            **/

            b=a;          //此时b的值也是123
  • 写回答

2条回答 默认 最新

  • Aaron-NZH 2019-06-26 00:03
    关注

    c语言中每个字符再ASll表上都有自己的值,这个值 - '0'后就是这个字符对应的整数
    所以c语言字符串转换成整数可以将字符存进字符数组里,逐个进行 -'0'的操作并按照位数乘10加起来得到对应整数

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        int i; int b = 0;
        int sum = 0; int len; // len表示数组长度 
        int n;
        char a[3] = {'1','2','3'};      // 修改程序仅需修改这一步,可以改成for循环输入想要的字符 
        // 逆序对字符数组中的元素操作,sizeof(a)/sizeof(a[0])可得到字符数组长度
        len = sizeof(a)/sizeof(a[0]);
        n = len -1;                    // 此时len为3时n为2,刚好对应要乘的位数 
        for(i = 0; i < len; i++){
            b = a[i] - '0';            // 得出每个字符对应的整数 
            b *= pow(10, n);           // 按照位数乘以10的n次方,pow在头文件math.h中,是进行次方运算的函数
            n -= 1; 
            sum += b;
        }
        printf("%d", sum);
        return 0;
     } 
    
    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 CSS实现渐隐虚线框
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容