我是靠谱客的博主 生动鸭子,最近开发中收集的这篇文章主要介绍C语言:进制转换(整数、字符串)本文重点:常见的整型、字符串进制转换(略有不同)2、字符串进制转换,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
本文重点:常见的整型、字符串进制转换(略有不同)
参考书籍:《算法笔记》
1、int型进制转换
1.1、P进制数x转换为十进制数y
实现代码如下:
#include <cstdio>
int main(){
int y = 0,product = 1,x,p; //x为原始数据,p为进制
scanf("%d%d",&x,&p);
while(x!=0){
y = y + (x%10) * product;
x = x/10;
product = product * p; //product可以理解为pow(p,i)的“平替”,哈哈
}
printf("%d",y); //y是转换后的十进制数
return 0;
}
1.2、十进制数y转换为Q进制数z
实现代码如下:
#include <cstdio>
int main(){
int z[40],y,q,num = 0; //数组z存放Q进制数的每一位,num为位数
scanf("%d%d",&y,&q);
do{
z[num] = y % q; //除基取余,这里q为基
num++; //不可以向算法笔记那样写,前后自加容易出问题
y = y/q;
} while( y!=0 ); //do...while是为了防止 y=0 时出问题
for(int i = num-1 ; i>=0 ; i--){
printf("%d",z[i]); //从高到低输出
}
return 0;
}
2、字符串进制转换
重点在于字符串Hash,是指将一个字符串S映射为一个整数。
实现代码如下:
int hashFunc(char S[],int len){
int id = 0; //用来保存结果
for(int i = 0; i < len; i++){
id = id * 26 + (S[i] - 'A');
}
return id;
}
id = id * 26 + (S[i] - 'A');
Tips:定义数组大小时一般会设置比最大的情况还要大10。
最后
以上就是生动鸭子为你收集整理的C语言:进制转换(整数、字符串)本文重点:常见的整型、字符串进制转换(略有不同)2、字符串进制转换的全部内容,希望文章能够帮你解决C语言:进制转换(整数、字符串)本文重点:常见的整型、字符串进制转换(略有不同)2、字符串进制转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复