我是靠谱客的博主 清秀香氛,最近开发中收集的这篇文章主要介绍进制转换—腾讯面试题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、大家有没有想过一个这样的问题,我们一般使用正整数时,在程序中都会这样写 int a = 356 ,打印a就会得到356。如果给的是字符串的“356”,你如何得到数字的356呢?

解法一:在java中可以使用JDK给我们提供的API可以很方便的实现这一需求。

                包装类Integer中有一个方法parseInt(),它提供了将字符串(十进制、八进制、16进制)转换成十进制数的功能。详细说明可以查看API文档。

                如 int a = Integer.parseInt("356");----十进制的

                     int a = Integer.parseInt("53c015", 16);-----16进制的

解法二:如果说明不允许使用语言中的API,你该怎么做呢?

现在教大家一种简单的方法可以把二进制、八进制和十进制的字符串转换成十进制数(注意这里没说16进制,待会说明理由)。仔细看代码,大家就会知道是怎么做的!

八进制字符串转十进制:

	public int numberTransform2(String str)
	{
		char[] strArray = str.toCharArray();
		int num = 0;
		
		for(int i = 0; i < strArray.length; i++)
		{
			num = num * 8 + ((int)(strArray[i] - '1') + 1);
		}		
		
		return num;
	}
十进制字符串转十进制

	public int numberTransform2(String str)
	{
		char[] strArray = str.toCharArray();
		int num = 0;
		
		for(int i = 0; i < strArray.length; i++)
		{
			num = num * 10 + ((int)(strArray[i] - '1') + 1);
		}		
		
		return num;
	}
大家看到区别了吗?仔细想想,手工操作一遍就会明白什么意思!

刚才提到此方法不适用于16进制字符串转十进制,原因是在ASCii表中字母和数字不是连续的,为什么提到ASCii表呢?请看(int)(strArray[i] - '1') + 1这句话字符相减就要用到ASCii码。

2、在Excel2003中,用A表示第1列,B表示第2列。。。Z表示第26列,AA表示第27列,AB表示第28列。。。以此类推。请写出一个函数,输入用字母表示的列号编码,输出它是第几列。(好多公司考过这道题)


这道题其实就是26进制字符串转十进制的题,由于A到Z在ASCii中是连续的,所以可以用上面的方法,大家可以试试!

 

 

补充知识点:

在ASCII码中,我们要记住几个关键的字符!

0:48

A:65

a:97

(1)数字在前,大写字母其后,最后是小写字母。

(2)小写字母和大写字母差32。

最后

以上就是清秀香氛为你收集整理的进制转换—腾讯面试题的全部内容,希望文章能够帮你解决进制转换—腾讯面试题所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部