数据的进制转换
来源:互联网 发布:mac ffmpeg 教程脚本 编辑:程序博客网 时间:2024/06/05 20:24
/**************************************************************** 函数作用:进行数据的进制转换** 参数: * Src:需要转化的数据(字符串形式)* SrcBase:原来数据的进制* Det:存放转换完后的数据(字符串形式,注意要足够大)* DetBase:转换后的数据的进制** 返回值:空* * 注意:对于负数来说,转换后的数据等于其原来的绝对值加上负号** 时间:2016-12-12****************************************************************/void ChangeBase(char *Src,int SrcBase,char *Det,int DetBase){ bool IsNeg = false; char *S = Src + strlen(Src) - 1; char *Beg = Src; char *Temp = NULL; int Result = 0; int IsZeor = 0; int Dig = 0; int Subscript = 0; //判断输入的数是否是零 if(*Src == '0') { *Det = '0'; return; } //判断输入的数是否是负数 if(*Src == '-') { IsNeg = true; ++Beg; } while(S >= Beg)//从后向前转换为10进制数据 { if(*S >= '0' && *S <= '9') { Result += ((*S - '0')*pow(SrcBase,Dig));//'0' - '9' } else { Result += ((*S - 55)*pow(SrcBase,Dig));//'A' - 'F' } --S; ++Dig; } //除基取余,注意,余数是反着的 Subscript = 0; while(Result) { Det[Subscript] = Result%DetBase; if(Det[Subscript] <= 9) { Det[Subscript] += '0'; } else { Det[Subscript] += 55; } ++Subscript; Result /= DetBase; } Dig = strlen(Det); Subscript = 0; //如果是负数的话,加负号 if(IsNeg) { Det[Dig] = '-'; ++Dig; } Temp = (char*)calloc(sizeof(char),MAX_PATH); //倒着复制数据去目的地址 while(Dig) { Temp[Subscript++] = Det[(Dig--) - 1]; } memcpy(Det,Temp,strlen(Det)); free(Temp); return;}
如有错误,请指出
0 0
- 数据的进制转换
- 数据的进制转换
- 数据的存储与进制转换
- 2进制数据与图片之间的互相转换
- 将16进制的数据转换为字符
- 数据表示——进制的转换
- 数据进制(二进制、十进制、十六进制)的转换详解
- 数据进制(二进制、十进制、十六进制)的转换详解
- 黑马程序员-进制转换优化(适合各种类型数据之间的转换)
- Java的数据转换
- 与、的数据转换
- Java的数据转换
- Camel的数据转换
- Camel的数据转换
- Camel的数据转换
- Binding的数据转换
- fifo的数据转换
- 数据之间的转换
- ContentProvider
- sublime text3 gb2312编码文件显示乱码,ConvertToUTF8转码失效
- SecureCRT常见命令行
- 集合框架_集合的由来及与数组的区别
- Android VideoView播放本地视频短暂黑屏的解决方法
- 数据的进制转换
- UITableViewCell上的cell与content…
- IOS开发 导航条…
- webView的截取,即把头部,尾部或者…
- IOS开发中的抽屉效果
- java IO编写过程
- 模态翻页效果
- cell的重用问题
- 正则表达式的重复匹配问题