/** * @(#)translater.java * * translater application * * @author * @version 1.00 2008/9/20 */ import java.io.*; import java.text.*; public class translater { static final int size_int = 32; // whereis sizeof operator in java? public static void main(String[] args) { // TODO, add your application code translat_binary(); translat_number(); } public static void translat_binary() { System.out.print( "entry binary: " ); String str = read_str(); int num = bin2num( str ); System.out.println( num ); } public static void translat_number() { System.out.print( "entry number: " ); int num = read_int(); char bin[] = num2bin( num ); /* The results did not correct, why? * bad java... int valid_no = 0; for( int i = 0; i < bin.length; i++ ) { if( '1' == bin[i] ) break; valid_no++; } String bin_dup = new String(); bin_dup.copyValueOf( bin, valid_no, bin.length - valid_no ); System.out.println( bin_dup ); **/ // stupide method int init = 0; for( int i = 0; i < bin.length; i++ ) { if( '0' == bin[i] && 0 == init ) continue; else init = 1; System.out.print( bin[i] ); } System.out.println( "" ); } public static String read_str() { String str; try { InputStreamReader rd = new InputStreamReader( System.in ); BufferedReader buf = new BufferedReader( rd ); str = buf.readLine(); } catch( IOException e ) { str = "0"; } return str; } public static int read_int() { String retstr = read_str(); DecimalFormat df = new DecimalFormat(); int retval; try { Number n = df.parse( retstr ); retval = n.intValue(); } catch( ParseException e ) { retval = 0; } return retval; } public static char[] num2bin( int no ) { char retstr[] = new char[size_int]; for( int i = 0; i < size_int; i++ ) { int c = 1 << i & no; if( 0 == c ) retstr[size_int - i - 1] = '0'; else retstr[size_int - i - 1] = '1'; } return retstr; } public static int bin2num( String str ) { int retval = 0; char tmp[] = str.toCharArray(); int len = str.length(); for( int i = 0; i < len; i++ ) { int no = len - i - 1; if( '1' == tmp[no] ) retval += 1 << i; else if( '0' != tmp[no] ) { // invalid char break; } } return retval; } }