我是靠谱客的博主 生动鸭子,最近开发中收集的这篇文章主要介绍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、字符串进制转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部