实现itoa()
上代码之前先讲个笑话:曾经有位面试官问:“你实现过 唉踢哦诶(音) 吗”? 我第一个想到的是各种OA系统,心想那玩意不多是Java实现的吗。。。过一会想明白了,瞬间石化。。。
#include <cstdio>
#include <stdint.h> int8_t Myitoa(int64_t In_i64SrcNum, uint8_t In_i8Radix, char *In_pcDst)
{
int8_t i8RetVal = ;
//这里强转是为了2、8、16进制显示的时候不需要符号
uint64_t ui64SrcNum = (uint64_t)In_i64SrcNum;
char *pcDst = In_pcDst;
const char acTable[] = "0123456789ABCDEF"; if (In_i8Radix <= || pcDst == NULL)
{
i8RetVal = -;
goto fun_ret;
} if (ui64SrcNum == )
{
*(pcDst ++) = '';
*pcDst = ;
goto fun_ret;
} if ((int64_t)ui64SrcNum < && In_i8Radix == )
{
ui64SrcNum = ~ui64SrcNum + ;
*(pcDst ++) = '-';
} do //do...while循环的效率较高
{
*(pcDst ++) = acTable[ui64SrcNum % In_i8Radix];
ui64SrcNum /= In_i8Radix;
} while (ui64SrcNum);
*pcDst = ;
pcDst --; In_pcDst = *In_pcDst == '-' ? In_pcDst + : In_pcDst;
do
{
char cTmp = *In_pcDst;
*In_pcDst = *pcDst;
*pcDst = cTmp;
In_pcDst ++;
pcDst --;
} while (In_pcDst < pcDst); fun_ret:
return i8RetVal;
} void main()
{
int64_t i64Test = -;
char acBinStr[] = {};
char acOctStr[] = {};
char acDecStr[] = {};
char acHexStr[] = {};
Myitoa(i64Test, , acBinStr);
Myitoa(i64Test, , acOctStr);
Myitoa(i64Test, , acDecStr);
Myitoa(i64Test, , acHexStr);
printf("%s\n%s\n%s\n%s\n", acBinStr, acOctStr, acDecStr, acHexStr);
return;
}
趁着找工作这段时间,补补基础,唉,不是科班出身的短板啊。。。
参考:
http://www.cnblogs.com/applebunny/archive/2012/06/21/2557361.html
http://blog.csdn.net/wwwsq/article/details/5137006
实现itoa()的更多相关文章
- c/c++面试题(8)memcopy/memmove/atoi/itoa
1.memcpy函数的原型: void* memcpy(void* dest,cosnt void* src,size_t n); 返回值:返回dest; 功能:从源内存地址src拷贝n个字节到des ...
- C语言提供了几个标准库函数 itoa() atoi()
C语言提供了几个标准库函数C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串.以下是用itoa()函数将整数转换为字符串的一个例子: # include <s ...
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...
- itoa
功能:把int转为字符数组 eg: int a=100: char ch[3]; itoa(a,ch,10)://十进制 ---->ch[0]==1;...
- 转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现
C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. ...
- atoi&itoa
char* itoa(int num,char*str,int radix) {/*索引表*/ char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVW ...
- C语言itoa()函数和atoi()函数详解(整数转字符)
http://c.biancheng.net/cpp/html/792.html C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串. 以下是用itoa()函数将整 ...
- itoa函数的实现(不同进制)
2013-07-08 17:12:30 itoa函数相对于atoi函数,比较简单,还是要注意考虑的全面. 小结: 一下几点需要考虑: 对负数,要加上负号: 考虑不同进制,根据要求进行处理:对不同的进制 ...
- itoa函数的递归实现(二级指针实现)
问题提出 <C Programming Language>书中在递归这一节预留了两个使用递归实现的函数,其中itoa函数是用来将一个整数转换为一个字符串.书中已有使用循环实现的版本,但是直 ...
- 当 ITOA 遇上 OneAlert,企业可以至少每年节省 3600 小时!
每个工作日,一家大型企业都可能存在一两件优先级为 1 级的事件,五六件优先级为 2 级的事件和百来件优先级为 3 级的事件.试想一下,如果公司所有支持人员都要收到每个事件的通知--不想了,我好方!还能 ...
随机推荐
- Android面试,View绘制流程以及invalidate()等相关方法分析
整个View树的绘图流程是在ViewRoot.java类的performTraversals()函数展开的,该函数做的执行过程可简单概况为 根据之前设置的状态,判断是否需要重新计算视图大小(measu ...
- 解决.NET 调用JAVA WEBService服务中文乱码问题
主要代码如下: String input ="中文" C#调用代码: String str = System.Text.Encoding.GetEncoding("UT ...
- Android开发者指南(9) —— ProGuard
转: 前言 本章内容为开发者指南(Dev Guide)/Developing/Tools/ProGuard,本章内容为"混淆器",版本为Android3.0 r1,翻译来自:&qu ...
- Net作业调度(一) -Quartz.Net入门 Quartz表达式生成器 [转]
背景 很多时候,项目需要在不同个时刻,执行一个或很多个不同的作业. Windows执行计划这时并不能很好的满足需求了. 这时候需要一个更为强大,方便管理,集部署的作业调度了. 介绍 Quartz一个开 ...
- 排序算法及其java实现
各种排序算法:冒择路(入)兮(稀)快归堆,桶式排序,基数排序 冒泡排序,选择排序,插入排序,稀尔排序,快速排序,归并排序,堆排序,桶式排序,基数排序 一.冒泡排序(BubbleSort) 1. 基本思 ...
- web前端开发文档
- java web 中的MVC
M:相当于Bean V:jsp C:servlet 当客户端发来请求,servlet响应请求处理请求,并把要发送给客户端的数据封装到Bean中,然后通过转发,将这个封装好了数据Bean送给jsp,js ...
- 纯CSS实现蜂窝六边形的个性相册
概述 纯CSS实现蜂窝六边形的个性相册 详细 代码下载:http://www.demodashi.com/demo/12804.html 此案例主要用到CSS3的 transform 和 transi ...
- Eclipse删除文件的恢复(转)
与vs不同,在eclipse中删除的文件是不会放进回收站的, 很多人以为eclipse是直接在磁盘删除文件,所以一般都会用反删除软件恢复. 其实不必那么麻烦的,只要对着被删除文件的上一层目录按右键, ...
- 转MQTT压力测试之Tsung的使用
转自:http://www.cnblogs.com/lingyejun/p/7941271.html nTsung测试工具的基本测试命令为 Tsung -f ~/.tsung/mqtt.xml -l ...