• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

c51数字转字符串

hangtao 2019-03-16 浏览量:2492
不使用sprintf怎么转换?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 有一个itoa函数可以参考自己实现如下:

    int itoa(int inchar * out){ // 返回值如果为-1表示转换出错,否则大于0,表示位数,最高9位负数,以及符号位,共10位字符。
    int len=0;
    int flag=0;
    int outC=0;
    char tmpS[ 9 ]={0};
    if(in==0) {
    out[0]='0';
    return 1;
    }
    if (in<0) { //处理负数
    in=in*(-1);
    flag=1;
    out[0]='-';
    outC++;
    }
    do{ // 处理一般数
    tmpS[len++]='0'+in%10;
    }while(in=in/10);
    if(len>9) return -1; //报错情况
    while(len>0){ // 数据输出处理
    out[ outC++ ] = tmpS[ --len ];
    }
    return outC;
    }

    • 发布于 2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:10
  • 可以根据ascii码的表,一个一个的查找并转换的
    • 发布于2019-03-16
    • 举报
    • 评论 0
    • 0
    • 0

  • sprintf(buf"%d%d"11);

    sprintf用法与printf大致相同,只是输出手段不是串口而是直接传输到字符串内存中了。

    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 看错了,不使用sprintf转换,最直接的方式就是针对字符串数组的某一位直接修改,如buf[0]=a+'0',加'0'的意思即为十进制数字转ASCII数字。

    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 数字和字母都是有顺序的,只要加上基数就可以了,比如数字直接加0x30就可以了
    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 只是数字转字符只需要将数字加0X30强制类型转换给char型就可以了
    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 也可以将整个表导入程序里面,然后查表,不过这种方法需要一块比较大的空间保存那个表
    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 都是可以找到0或是A对应的16进制,进行自加自减来找到的
    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 为什么不用sprintf呢?这么好用。

    下面是不用sprintf的。

    int a=1024;

    unsinged char num[5]={};

    num[0]=a/1000+48;

    num[1]=a/100%10+48;

    num[2]=a/10%100+48;

    num[3]=a%10+48;

    感觉上面的取位可能有点点问题。。。.。分别取出个位十位百位千位等等。每个为加上48是为了转换成ascii的的数字。字符0对应ascii为48

    • 发布于2019-03-18
    • 举报
    • 评论 0
    • 0
    • 0

  • 那么只能是转成16进制后,通过数据与ascii表的对比来选取字符了
    • 发布于2019-03-18
    • 举报
    • 评论 0
    • 0
    • 0

  • ?void num2char(int numunsigned char temp[3]) 一定要注意这里的字符串长度。
    {
    int i;
    i = 2;    // 与这里的字符串长度相对应,从最后一个字符位开始。

    do{
        temp[i] = num%10+'0';       //不太清楚,为什么这里加上 ‘0’ 就是字符了呢!

        num/=10;

    i = i -1;
           
    } while(i>=0);

    }


    • 发布于2019-03-18
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

c51数字转字符串