数字按照不同格式转换成字符串

  如果自己写函数,不使用itoa怎么判断呢?

  我们用通常的办法,对数字进行每位的除商,得到后与字符‘0‘相加

        flag = 0;
        for(i=0;i<6;i++){

            tmp = int(num/pow(10,5-i));
            if(tmp != 0){
                *str = 1;
                flag = 1;
            }
            if(*str != 0 || flag){
                *str++ = tmp+‘0‘;
                num = num%int(pow(10,5-i));
            }
        }        

  要注意的就是,我们设置标志位flag,为1之前的所有0都不输出。当flag为1时,进行转换。

  全部代码可以参考:

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 //蔡健雅 双栖动物
  4 int myitoa(int num,char *str,int n);
  5 int pow(int num,int n);
  6 int main(){
  7     int num = 100;
  8     char str[15];
  9     myitoa(100,str,16);
 10     printf("number %d  binary %s\n",num,str);
 11     myitoa(100,str,10);
 12     printf("number %d  binary %s\n",num,str);
 13     myitoa(100,str,8);
 14     printf("number %d  binary %s\n",num,str);
 15     myitoa(100,str,2);
 16     printf("number %d  binary %s\n",num,str);
 17     getchar();
 18     return 0;
 19 }
 20 int pow(int num,int n){
 21     int i;
 22     int result = 1;
 23     for(i=0;i<n;i++){
 24         result *= num;
 25     }
 26     return result;
 27 }
 28 int myitoa(int num,char *str,int n){
 29     if(str == NULL)
 30         return -1;
 31     if(num < 0){
 32         *str++ = ‘-‘;
 33         num = 0 - num;
 34     }
 35     int i;
 36     int tmp = 0;
 37     int flag = 0;
 38     *str = 0;
 39     switch(n){
 40     case 16:
 41         flag = 0;
 42         for(i=0;i<8;i++){
 43             tmp = int(num/pow(16,7-i));
 44             if(tmp != 0){
 45                 *str = 1;
 46                 flag = 1;
 47             }
 48             if(*str != 0 || flag){
 49                 if(tmp >= 0 && tmp <= 9){
 50                     *str++ = tmp+‘0‘;
 51                 }else if(tmp >= 10 && tmp <= 15){
 52                     *str++ = tmp-10+‘A‘;
 53                 }
 54                 num = num%int(pow(16,7-i));
 55             }
 56         }
 57         break;
 58     case 10:
 59         flag = 0;
 60         for(i=0;i<6;i++){
 61
 62             tmp = int(num/pow(10,5-i));
 63             if(tmp != 0){
 64                 *str = 1;
 65                 flag = 1;
 66             }
 67             if(*str != 0 || flag){
 68                 *str++ = tmp+‘0‘;
 69                 num = num%int(pow(10,5-i));
 70             }
 71         }
 72         break;
 73     case 2:
 74         flag = 0;
 75         for(i=0;i<32;i++){
 76             tmp = int(num/pow(2,31-i));
 77             if(tmp != 0){
 78                 *str = 1;
 79                 flag = 1;
 80             }
 81             if(*str != 0 || flag){
 82                 *str++ = tmp+‘0‘;
 83                 num = num%int(pow(2,31-i));
 84             }
 85         }
 86         break;
 87     case 8:
 88         flag = 0;
 89         for(i=0;i<10;i++){
 90             tmp = int(num/pow(8,9-i));
 91             if(tmp != 0){
 92                 *str = 1;
 93                 flag = 1;
 94             }
 95             if(*str != 0 || flag){
 96                 *str++ = tmp+‘0‘;
 97                 num = num%int(pow(8,9-i));
 98             }
 99         }
100         break;
101     }
102     *str = ‘\0‘;
103     return 0;
104 }

  运行结果为:

数字按照不同格式转换成字符串,布布扣,bubuko.com

时间: 2024-12-25 13:34:37

数字按照不同格式转换成字符串的相关文章

sql server日期时间格式转换成字符串格式

转载自:http://www.cnblogs.com/zhangq723/archive/2011/02/16/1956152.html

将整形数字(int)转换成字符串

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> #include<string.h> void itoa(int n, char *buf) { int count = 0; char nu; char buf2[128] = { 0 }; //核心算法很简单 就是每次取出各位数字然后把数字转存进数组,中间有一个数组匿置的过程 do

js字符串转换成数字,数字转换成字符串

js字符串转换成数字   将字符串转换成数字,得用到parseInt函数. parseInt(string) : 函数从string的开始解析,返回一个整数. 举例:parseInt('123') : 返回 123(int): parseInt('1234xxx') : 返回 1234(int): 如果解析不到数字,则将返回一个NaN的值,可以用isNaN()函数来检测: 举例 : var i = parseInt('abc'); if (isNaN(i)) { alert('NaN value

C#返回时间格式转换成 js 字符串

在.net 中,调用 post 或者 get和后台通信时,如果有时间返回信息,后台返回的时间信息一般是这样格式:Thu Jul 9 23:14:53 UTC+0800 2015,那么要在前台显示就会有点点小困难.最近使用到,小小研究了下,参照网络中的写法,解决方法如下:1.先将C#的格式转换成js 的datetime形式. /* *将C#返回的日期格式进行转换 将 类似 Thu Jul 9 23:14:53 UTC+0800 2015 转换成 2015-05-06 *Parameters: *o

json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值

主要内容: 一.json相关概念 二.json字符串转换成json对象 (字符串-->JSON对象) 三.json对象转换成字符串(json对象-->字符串) 四.将值转换成字符串(值-->字符串) 五.字符串转成值(字符串-->值) 同步的交流学习社区:http://www.mwcxs.top/page/425.html 一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想

将json的时间格式转换成正常的时间格式

/** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) * eg: * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 * (new Date())

C#使用FFmpeg 将视频格式转换成Gif图片示例

一.本次使用参数说明 /* * 参数说明: * -i 源文件位置 * -y 输出新文件,是否覆盖现有文件 * -s 视频比例 4:3 320x240/640x480/800x600 16:9 1280x720 ,默认值 'wxh',和原视频大小相同 * -f 等同'-formats',定义的可支持的文件格式'ffmpeg-formats',更多参考:https://ffmpeg.org/ffmpeg-formats.html * -vframes 数字类型,指定视频输出帧数 * -dframes

前台 JSON对象转换成字符串 相互转换 的几种方式

在最近的工作中,使用到JSON进行数据的传递,特别是从前端传递到后台,前台可以直接采用ajax的data函数,按json格式传递,后台Request即可,但有的时候,需要传递多个参数,后台使用request进行接收.有时传递了几个数值,还好接收.但是如果传递一个json数组,这样后台接受的时候Request多个很麻烦,此时要按照类的格式或者 集合的形式进行传递.例如下面的例子: 前台按类的格式传递JSON对象: var jsonUserInfo = "{\"TUserName\&quo

将整数n转换成字符串的方法

最近做一个题,用递归方法将整数n转换成为字符串,做了半天做好了才发现有一个库函数直接就可以实现这个功能,真是日了狗了.... 小二,上代码... #include<stdio.h> #include<stdlib.h> #include<string.h> //  这个turnover函数是为了将字符串调转过来,因为convert函数中将n转换成字符串后字符串是倒着的 //  就是利用了一个中间变量将字符串数组s首尾依次交换 char *turnover(char *s