package zinara.code_generator; import java.util.HashMap; public class DataTranslator{ public DataTranslator(){} public static String toASCII(char C){ int asciiC = (int)C; return Integer.toString(asciiC); } public static String toReal(double D){ return toDouble(D)+"h"; } public static String toReal(float F){ return toFloat(F)+"h"; } public static String toDouble(double D){ return Long.toHexString(Double.doubleToRawLongBits(D)); // String d = ""; // long bits; // long mask = 0x00000001; // bits = Double.doubleToLongBits(D); // for (int i=1 ; i<=64; ++i){ // d = Long.toString(bits & mask)+d; // bits = bits >>> 1; // } // return toHex(d); } public static String toFloat(float F){ return Integer.toHexString(Float.floatToRawIntBits(F)); // String f = ""; // int bits; // int mask = 0x0001; // bits = Float.floatToIntBits(F); // for (int i=1 ; i<=32; ++i){ // f = Integer.toString(bits & mask)+f; // bits = bits >>> 1; // } // return toHex(f); } public static String toHex(String binary){ String hex = ""; int i = 0; while (i<=(binary.length())-4){ hex = hex + hexMap(binary.substring(i,i+4)); i += 4; } return hex; } public static String hexMap(String binary){ if (binary.compareTo("0000") == 0) return "0"; else if (binary.compareTo("0001") == 0) return "1"; else if (binary.compareTo("0010") == 0) return "2"; else if (binary.compareTo("0011") == 0) return "3"; else if (binary.compareTo("0100") == 0) return "4"; else if (binary.compareTo("0101") == 0) return "5"; else if (binary.compareTo("0110") == 0) return "6"; else if (binary.compareTo("0111") == 0) return "7"; else if (binary.compareTo("1000") == 0) return "8"; else if (binary.compareTo("1001") == 0) return "9"; else if (binary.compareTo("1010") == 0) return "A"; else if (binary.compareTo("1011") == 0) return "B"; else if (binary.compareTo("1100") == 0) return "C"; else if (binary.compareTo("1101") == 0) return "D"; else if (binary.compareTo("1110") == 0) return "E"; else if (binary.compareTo("1111") == 0) return "F"; else{ System.out.println("Invalid binary: "+binary); System.exit(1); } return ""; } }