`
i3587616
  • 浏览: 19898 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

怀具,面试亡在简单的API上

阅读更多
一道简单的回答不出来。就是问随便给一个数,转换成十六进制。笔试完了面试又问了如何转成八进制,如何转成二进制。
但我没想到的是答案,如此简单。
Integer.toString(target_i, 16);就是十六进制,
Integer.toString(target_i, 2);二进制。
Integer.toString(target_i,八进制。
完全杯剧啊,还写什么代码。怪不得笔试时那题给的地方那么小。只怪我不灵活。笔试时也无法查jdk文档。
分享到:
评论
17 楼 wzju64676266 2010-10-15  
比如System.out.print()能不能当成void来用

就像new Object()  能不能当Object来用,两个不同的概念
16 楼 wzju64676266 2010-10-15  
面试官的目的不是你怎么使用方法,而是你自己写个转换的功能吧,自己写也很简单啊
15 楼 rockis 2010-10-14  
Python实现
chars =  [chr(ord('0') +  c) for c in range(10)] + [chr(ord('A') +  c) for c in range(6)]
tohex = lambda num, str = '' : num == 0 and ('0x' + str) or tohex(num >> 4, chars[num & 0xf] + str)
print tohex(0x100cdef)

chars =  ['0', '1']
tobin = lambda num, str = '' : num == 0 and str or tobin(num >> 1, chars[num & 1] + str)
print tobin(0x100cdef)

chars =  [chr(ord('0') +  c) for c in range(8)]
tooct = lambda num, str = '' : num == 0 and str or tooct(num >> 2, chars[num & 7] + str)
print tooct(0x100cdef)


14 楼 風一樣的男子 2010-10-14  
toBinaryString()、toHexString()、 toOctalString() 都有好不
13 楼 i3587616 2010-10-14  
看了API源码,Integer的。
public static final int   MIN_VALUE = 0x80000000;

public static final int   MAX_VALUE = 0x7fffffff;

public static final Class<Integer> TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
final static char[] digits = {
'0' , '1' , '2' , '3' , '4' , '5' ,
'6' , '7' , '8' , '9' , 'a' , 'b' ,
'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
'o' , 'p' , 'q' , 'r' , 's' , 't' ,
'u' , 'v' , 'w' , 'x' , 'y' , 'z'
    };
public static String toString(int i, int radix) {

        if (radix < 2 || radix > 36)
    radix = 10;

/* Use the faster version */
if (radix == 10) {
    return toString(i);
}

char buf[] = new char[33];
boolean negative = (i < 0);
int charPos = 32;

if (!negative) {
    i = -i;
}

while (i <= -radix) {
    buf[charPos--] = digits[-(i % radix)];
    i = i / radix;
}
buf[charPos] = digits[-i];

if (negative) {
    buf[--charPos] = '-';
}

return new String(buf, charPos, (33 - charPos));
    }
public static String toString(int i) {
        if (i == Integer.MIN_VALUE)
            return "-2147483648";
        int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
        char[] buf = new char[size];
        getChars(i, size, buf);
        return new String(0, size, buf);
    }
12 楼 flysnowxf 2010-10-14  
写了一个比较简单的实现:
	public static String toString(long num, int radix) {
		StringBuilder result = new StringBuilder();
		while(true) {
			long remainder = num % radix;
			result.append(toHexLetter(remainder));
			num = num / radix;
			if(num == 0) {
				break;
			}
		}
		
		return result.reverse().toString();
	}
	
	private static String toHexLetter(long num) {
		if(num < 10)
			return num + "";
		
		String letter = "";
		if(num == 10) letter = "a";
		else if(num == 11) letter = "b";
		else if(num == 12) letter = "c";
		else if(num == 13) letter = "d";
		else if(num == 14) letter = "e";
		else if(num == 15) letter = "f";
		
		return letter;
	}

如果不是16进制需要转字母,代码就很简单了。
11 楼 i3587616 2010-10-14  
yangyw 写道
或许人家是想考你进制转换之间的位运算,而不是要考你API!

就是要考你API的,它要你写出具体的程序,当然算法也行,但给出的位置只有二行大小。明显是填上API就算。
而且面试时有提示我是用JAVA的API来,我说不清楚哪个,用到时在查文档。
我说有些东西不用记,只要知道怎么做就好。那他就说,那有什么要记的。
10 楼 shadowvan 2010-10-14  
楼主,怀具
9 楼 yangyw 2010-10-14  
或许人家是想考你进制转换之间的位运算,而不是要考你API!
8 楼 EldonReturn 2010-10-14  
面试显然不会考API,要考这种古怪的API那这面试太失败
这题不是要考那个辗转求余法么
7 楼 lyw985 2010-10-14  
面试的时候不应该考API里的东西,应该是考算法才对吧
6 楼 i3587616 2010-10-14  
seele 写道
随便给一个数

超过Integer范围呢?

整数啦,Long也有这个方法。
不考虑超过long的。当时考的是十六进制。Float也有toHexString方法。就是没想到。
面试时又问了转化为二进制,八进制。
5 楼 skyuck 2010-10-14  
对啊   不熟悉api自己转换一下也很简单啊

ps:我最近也在熟悉api
4 楼 lkj107 2010-10-14  
刚工作的,就是考些细节,等你有工作经验了,就不考这个了
3 楼 rocketball 2010-10-14  
这TMD的自己转化一下也很简单
2 楼 seele 2010-10-14  
随便给一个数

超过Integer范围呢?
1 楼 i3587616 2010-10-13  
有什么直接转化的好的高速的方法吗。还有void的方法是无返回值。
比如System.out.print()能不能当成void来用。比如System.out.print().class好像行不通。

相关推荐

Global site tag (gtag.js) - Google Analytics