Advertisement
Guest User

Conversions class

a guest
Feb 20th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.00 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package converter;
  7.  
  8. import java.util.ArrayList;
  9. import java.util.Iterator;
  10. import java.util.Scanner;
  11. import javafx.scene.input.KeyCode;
  12.  
  13. /**
  14.  *
  15.  * @author Acer
  16.  */
  17. public class Conversions {
  18.    
  19.     @Checked
  20.     public static String decimalToBinary(String decimal){
  21.         if(decimal.length() == 0)
  22.             return "";
  23.         for(int i = 0;i < decimal.length();i++)
  24.             if(!Utilities.isDecimalDigit(decimal.charAt(i)))
  25.                 return "Error!";
  26.         if(decimal.charAt(0) == '-')
  27.             return Long.toBinaryString(Long.parseLong(decimal));
  28.         switch(decimal){
  29.             case "0":
  30.                 return "0";
  31.             case "1":
  32.                 return "1";    
  33.             default:
  34.                 long value = Long.parseLong(decimal);
  35.                 String rep = "";
  36.                 while(value > 0){
  37.                     rep += (value % 2);
  38.                     value /= 2;
  39.                 }
  40.                 return Utilities.reverse(rep);
  41.         }
  42.     }
  43.    
  44.     @Checked
  45.     public static String decimalToOctal(String decimal){
  46.         if(decimal.length() == 0)
  47.             return "";
  48.         for(int i = 0;i < decimal.length();i++)
  49.             if(!Utilities.isDecimalDigit(decimal.charAt(i))){
  50.                 System.out.println("Error in decimalToOctal");
  51.                 return "Error!";
  52.             }
  53.         if(decimal.charAt(0) == '-')
  54.             return Long.toOctalString(Long.parseLong(decimal));
  55.         switch(decimal){
  56.             case "0":
  57.                 return "0";
  58.             case "1":
  59.                 return "1";
  60.             case "2":
  61.                 return "2";
  62.             case "3":
  63.                 return "3";
  64.             case "4":
  65.                 return "4";
  66.             case "5":
  67.                 return "5";
  68.             case "6":
  69.                 return "6";
  70.             case "7":
  71.                 return "7";
  72.             default:
  73.                 long value = Long.parseLong(decimal);
  74.                 String rep = "";
  75.                 while(value > 0){
  76.                     rep += (value % 8);
  77.                     value /= 8;
  78.                 }
  79.                 return Utilities.reverse(rep);
  80.         }
  81.     }
  82.    
  83.     @Checked
  84.     public static String decimalToHexadecimal(String decimal){
  85.         if(decimal.length() == 0)
  86.             return "";
  87.         for(int i = 0;i < decimal.length();i++)
  88.             if(!Utilities.isDecimalDigit(decimal.charAt(i))){
  89.                 System.out.println("Error in decimalToHexadecimal");
  90.                 return "Error!";
  91.             }
  92.         if(decimal.charAt(0) == '-')
  93.             return Long.toHexString(Long.parseLong(decimal));
  94.         switch(decimal){
  95.             case "0":
  96.                 return "0";
  97.             case "1":
  98.                 return "1";
  99.             case "2":
  100.                 return "2";
  101.             case "3":
  102.                 return "3";
  103.             case "4":
  104.                 return "4";
  105.             case "5":
  106.                 return "5";
  107.             case "6":
  108.                 return "6";
  109.             case "7":
  110.                 return "7";
  111.             case "8":
  112.                 return "8";
  113.             case "9":
  114.                 return "9";
  115.             case "10":
  116.                 return "A";
  117.             case "11":
  118.                 return "B";
  119.             case "12":
  120.                 return "C";
  121.             case "13":
  122.                 return "D";
  123.             case "14":
  124.                 return "E";
  125.             case "15":
  126.                 return "F";
  127.             default:
  128.                 long value = Long.parseLong(decimal);
  129.                 String rep = "";
  130.                 while(value > 0){
  131.                     rep += Utilities.toHexadecimalDigit((int) (value % 16));
  132.                     value /= 16;
  133.                 }
  134.                 return Utilities.reverse(rep);
  135.         }
  136.     }
  137.    
  138.     @Checked
  139.     public static String binaryToDecimal(String binary){
  140.         if(binary.length() == 0)
  141.             return "";
  142.         for(int i = 0;i < binary.length();i++)
  143.             if(!Utilities.isBinaryDigit(binary.charAt(i)))
  144.                 return "Error!";
  145.         switch(binary){
  146.             case "0":
  147.                 return "0";
  148.             case "1":
  149.                 return "1";
  150.             default:
  151.                 binary = Utilities.reverse(binary);
  152.                 long result = 0;
  153.                 for(int i = 0;i < binary.length();i++)
  154.                     if(binary.charAt(i) != '0')
  155.                         result += (long) Math.pow(2, i);
  156.                 return String.valueOf(result);
  157.         }
  158.     }
  159.    
  160.     @Checked
  161.     public static String binaryToOctal(String binary){
  162.         if(binary.length() == 0)
  163.             return "";
  164.         for(int i = 0;i < binary.length();i++)
  165.             if(!Utilities.isBinaryDigit(binary.charAt(i)))
  166.                 return "Error!";
  167.         switch(binary){
  168.             case "0":
  169.                 return "0";
  170.             case "1":
  171.                 return "1";
  172.             default:
  173.                 return decimalToOctal(binaryToDecimal(binary));
  174.         }
  175.     }
  176.    
  177.     @Checked
  178.     public static String binaryToHexadecimal(String binary){
  179.         if(binary.length() == 0)
  180.             return "";
  181.         for(int i = 0;i < binary.length();i++)
  182.             if(!Utilities.isBinaryDigit(binary.charAt(i)))
  183.                 return "Error!";
  184.         switch(binary){
  185.             case "0":
  186.                 return "0";
  187.             case "1":
  188.                 return "1";
  189.             default:
  190.                 return decimalToHexadecimal(binaryToDecimal(binary));
  191.         }
  192.     }
  193.    
  194.     @Checked
  195.     public static String octalToDecimal(String octal){
  196.         if(octal.length() == 0)
  197.             return "";
  198.         for(int i = 0;i < octal.length();i++)
  199.             if(!Utilities.isOctalDigit(octal.charAt(i))){
  200.                 System.out.println("Error in decimalToHexadecimal");
  201.                 return "Error!";
  202.             }
  203.         switch(octal){
  204.             case "0":
  205.                 return "0";
  206.             case "1":
  207.                 return "1";    
  208.             case "2":
  209.                 return "2";    
  210.             case "3":
  211.                 return "3";
  212.             case "4":
  213.                 return "4";
  214.             case "5":
  215.                 return "5";
  216.             case "6":
  217.                 return "6";
  218.             case "7":
  219.                 return "7";
  220.             default:
  221.                 octal = Utilities.reverse(octal);
  222.                 long result = 0;
  223.                 Iterator<Character> it = Utilities.stringIterator(octal);
  224.                 int x = 0;
  225.                 while(it.hasNext())
  226.                     result += (long) Math.pow(8, x++) * Character.digit(it.next(), 10);
  227.                 return String.valueOf(result);
  228.         }
  229.     }
  230.    
  231.     @Checked
  232.     public static String octalToBinary(String octal){
  233.         if(octal.length() == 0)
  234.             return "";
  235.         for(int i = 0;i < octal.length();i++)
  236.             if(!Utilities.isOctalDigit(octal.charAt(i)))
  237.                 return "Error!";
  238.         switch(octal){
  239.             case "0":
  240.                 return "0";
  241.             case "1":
  242.                 return "1";
  243.             default:
  244.                 ArrayList<StringBuilder> groups = new ArrayList<>();
  245.                 for(int i = 0;i < octal.length();i++){
  246.                     StringBuilder current = new StringBuilder( decimalToBinary(String.valueOf(octal.charAt(i))) );
  247.                     if(i > 0){
  248.                         while(current.length() < 3)
  249.                             current.insert(0, '0');
  250.                     }
  251.                     groups.add(current);
  252.                 }
  253.                 String result = "";
  254.                 result = groups.stream().map((elem) -> elem.toString()).reduce(result, String::concat);
  255.                 return result;
  256.         }
  257.     }
  258.    
  259.     @Checked
  260.     public static String octalToHexadecimal(String octal){
  261.         return decimalToHexadecimal( octalToDecimal(octal) );
  262.     }
  263.    
  264.     @Checked
  265.     public static String hexadecimalToDecimal(String hex){
  266.         if(hex.length() == 0)
  267.             return "";
  268.         for(int i = 0;i < hex.length();i++)
  269.             if(!Utilities.isHexadecimalDigit(hex.charAt(i))){
  270.                 System.out.println("Error in hexadecimalToDecimal");
  271.                 return "Error!";
  272.             }
  273.         switch(hex){
  274.             case "0":
  275.                 return "0";
  276.             case "1":
  277.                 return "1";    
  278.             case "2":
  279.                 return "2";    
  280.             case "3":
  281.                 return "3";
  282.             case "4":
  283.                 return "4";
  284.             case "5":
  285.                 return "5";
  286.             case "6":
  287.                 return "6";
  288.             case "7":
  289.                 return "7";
  290.             case "8":
  291.                 return "8";
  292.             case "9":
  293.                 return "9";
  294.             case "A":
  295.             case "a":
  296.                 return "10";
  297.             case "B":
  298.             case "b":
  299.                 return "11";
  300.             case "C":
  301.             case "c":
  302.                 return "12";
  303.             case "D":
  304.             case "d":
  305.                 return "13";
  306.             case "E":
  307.             case "e":
  308.                 return "14";
  309.             case "F":
  310.             case "f":
  311.                 return "15";
  312.             default:
  313.                 hex = Utilities.reverse(hex);
  314.                 long result = 0;
  315.                 for(int i = 0;i < hex.length();i++)
  316.                     result += (long) (Math.pow(16, i) * Utilities.toDecimalValue(hex.charAt(i)));
  317.                 return String.valueOf(result);
  318.         }
  319.     }
  320.    
  321.     @Checked
  322.     public static String hexadecimalToBinary(String hex){
  323.         if(hex.length() == 0)
  324.             return "";
  325.         for(int i = 0;i < hex.length();i++)
  326.             if(!Utilities.isHexadecimalDigit(hex.charAt(i)))
  327.                 return "Error!";
  328.         switch(hex){
  329.             case "0":
  330.                 return "0";
  331.             case "1":
  332.                 return "1";
  333.             default:
  334.                 ArrayList<StringBuilder> groups = new ArrayList<>();
  335.                 for(int i = 0;i < hex.length();i++){
  336.                     StringBuilder current = new StringBuilder( decimalToBinary( String.valueOf( Utilities.toDecimalValue(hex.charAt(i)) ) ) );
  337.                     if(i > 0){
  338.                         while(current.length() < 4)
  339.                             current.insert(0, '0');
  340.                     }
  341.                     groups.add(current);
  342.                 }
  343.                 String result = "";
  344.                 result = groups.stream().map((elem) -> elem.toString()).reduce(result, String::concat);
  345.                 return result;
  346.         }
  347.     }
  348.    
  349.     @Checked
  350.     public static String hexadecimalToOctal(String hex){
  351.         return decimalToOctal( hexadecimalToDecimal(hex) );
  352.     }
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement