锁定老帖子 主题:怀具,面试亡在简单的API上
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-10-14
楼主,怀具
![]() |
|
返回顶楼 | |
发表时间:2010-10-14
yangyw 写道 或许人家是想考你进制转换之间的位运算,而不是要考你API!
就是要考你API的,它要你写出具体的程序,当然算法也行,但给出的位置只有二行大小。明显是填上API就算。 而且面试时有提示我是用JAVA的API来,我说不清楚哪个,用到时在查文档。 我说有些东西不用记,只要知道怎么做就好。那他就说,那有什么要记的。 |
|
返回顶楼 | |
发表时间: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进制需要转字母,代码就很简单了。 |
|
返回顶楼 | |
发表时间: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); } |
|
返回顶楼 | |
发表时间:2010-10-14
toBinaryString()、toHexString()、 toOctalString() 都有好不
|
|
返回顶楼 | |
发表时间:2010-10-14
最后修改: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) |
|
返回顶楼 | |
发表时间:2010-10-15
面试官的目的不是你怎么使用方法,而是你自己写个转换的功能吧,自己写也很简单啊
|
|
返回顶楼 | |
发表时间:2010-10-15
比如System.out.print()能不能当成void来用
就像new Object() 能不能当Object来用,两个不同的概念 |
|
返回顶楼 | |