我是靠谱客的博主 生动鸭子,这篇文章主要介绍C语言:进制转换(整数、字符串)本文重点:常见的整型、字符串进制转换(略有不同)2、字符串进制转换,现在分享给大家,希望可以做个参考。

本文重点:常见的整型、字符串进制转换(略有不同)

参考书籍:《算法笔记》


1、int型进制转换

1.1、P进制数x转换为十进制数y

实现代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
#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

实现代码如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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映射为一个整数。

实现代码如下:

复制代码
1
2
3
4
5
6
7
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语言:进制转换(整数、字符串)本文重点:常见内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(91)

评论列表共有 0 条评论

立即
投稿
返回
顶部