Как прочитать двоичный массив строк в обратном порядке, а затем преобразовать в десятичную переменную int?(Без разбора) - PullRequest
0 голосов
/ 17 февраля 2019

Я не понимаю, как кодировать в программу следующее: Читать двоичный массив строк в обратном порядке.Проверьте обратный двоичный массив на 1 (я полагаю, если утверждения).Назначьте битовые значения для каждого 1 в двоичном виде.Используйте math.pow для получения десятичного значения для каждого 1. Добавьте все активные биты.

Моя программа должна сделать следующее: Открыть текстовый файл (ЗАВЕРШЕНО) Текстовый файл содержит:

 (33CDAEFFAD)  
 (032DAE01AD)  
 (196CDAEFC0)  
 (21A00D0000)  
 (100CDAEFFA)  
 (F3ABCDEFAB)  
 (29A0EDF301)  
 (3ABCDEFABC)  

Чтение каждого шестнадцатеричного числа (ЗАВЕРШЕНО) ->
Преобразование шестнадцатеричного значения в двоичное (ЗАВЕРШЕНО) ->
Преобразование двоичного значения в десятичное значение (ПОТЕРЯН)

public static String[] hexToBinary () throws IOException //converts from 
hex to binary
{
    Scanner inFile = new Scanner(new File("RAMun3"));  

String result[] = new String[8]; //created array to hold binary values
    String bValue; 
    String x = ""; 
String y = "";
int counter = 0;      

    while (inFile.hasNextLine() && counter <= 7) //reads lines from text 
    file && stops array from                             
    going out of bounds
    {   
        String line = inFile.nextLine();
        Scanner input = new Scanner(line);
        String hex = input.next();

        for (int i = 0; i < hex.length(); i++) //for loop to convert hex 
        digits to binary 
        {
            char hexC = hex.charAt(i);
        switch (hexC) 
            {
             case ('0'):
                    bValue = "0000";
                    break;   
             case ('1'):
                    bValue = "0001";
                    break;
             case ('2'):
                    bValue = "0010";
                    break;
             case ('3'):
                    bValue = "0011";
                    break;
             case ('4'):
                    bValue = "0100";
                    break;
             case ('5'):
                    bValue = "0101";
                    break;
             case ('6'):
                    bValue = "0110";
                    break;
             case ('7'):
                    bValue = "0111";
                    break;
             case ('8'):
                    bValue = "1000";
                    break;
             case ('9'):
                    bValue = "1001";
                    break;
             case ('A'):
                    bValue = "1010";
                    break;
             case ('B'):
                    bValue = "1011";
                    break;
             case ('C'):
                    bValue = "1100";
                    break;
             case ('D'):
                    bValue = "1101";
                    break;
             case ('E'):
                    bValue = "1110";
                    break;
             case ('F'):
                    bValue = "1111";
                    break;    
             default:
                    bValue = "N/A";
                    break;
                } 
    x = bValue;
    y += x;     
            }       
    result[counter] = y;
    counter++; 
    y = "";     
        }
        for (int t = 0; t < result.length; t++)
            {   
        System.out.println(result[t]);      
            }
return result;
}

public static void reverseResult(String[] y) //Attempt at code for  
reversing array
{
    for (int i = y.length-1; i>=0; i--) 
{
    System.out.print(y[i]+" ");     
}
}

public static int binToDecimal (){}

public static void main (String args[]) throws IOException //main
{
    readFromFile();
hexToBinary();   
binToDecimal();
}

} 

Ожидаемые результаты после преобразования:

222494130093 -- 13651280301 -- 109200469952 -- 144419127296 -- 68935151610 -- 1046559453099 -- 178793607937 -- 252276832956

1 Ответ

0 голосов
/ 17 февраля 2019

После обращения каждой строки в результате:

public static int binToDecimal (){
    for(String bin:result){
        int dec=0;
        for(int i=0;i<bin.length;i++){
          dec+=Math.pow(2,i)*(bin.charAt(i)-'0');
        }
        println("" + dec);
    }
}

С оператором "если", как вы его упомянули:

 public static int binToDecimal (){
    for(String bin:result){
        int dec=0;
        for(int i=0;i<bin.length;i++){
          if('1' == bin.charAt(i)){
              dec+=Math.pow(2,i);
          }
        }
        println("" + dec);
    }
}
...