/* 主要是练习使用双端队列实现入栈出栈从而实现 16 进制 查表的转换 */ package generic; import java.util.Deque; import java.util.LinkedList; import java.util.NoSuchElementException; import org.junit.Test; public class StackDemo { @Test public void test(){ System.out.println(StackDemo.toHex(60)); } public static String toHex(Integer num){ Deque<Character> deq = new LinkedList<Character>(); char[] digits = new char[16]; for(int i=0;i<16;i++){ if(i<10) digits[i] = (char)(i+'0'); else{ digits[i] = (char)('A'+i-10); } } while(num>0){ int mod = num%16; deq.push(digits[mod]); // 双端队列查表法 实现 16 进制的转换 num /= 16; } StringBuilder sb = new StringBuilder(); while(true){ try{ sb.append(deq.pop()+""); }catch(NoSuchElementException ex){ // ex.printStackTrace(); break; } } sb.insert(0, "0x"); // String hexPrefix = sb.substring(sb.length()-2); return sb.toString(); } }
Sign in to make a reply
拂髯客Frank