Den Wert einer Hex. value bestimmten.

ms_cikar

Mitglied
Hallo Leute,

ich habe eine Frage.
Ich habe ein Hex Value als Message 16 Byte lang.
zB. Message= FF FF FF FF FF FF FF FF.
Als Binär sind das ja 64 x 1

Ich muss den Wert zwischen 5. Bit und 10. Bit rechnen. Wie ich diesen Wert auf Papier berechne ist mir klar.
Wie kann ich so ein Message den ich als String habe so umwandeln dass ich am ende ein Binär zahl habe. dann könnte ich es einfach berechnen.

Ich muss irgendwie meinen String Message in Binär umwandeln.

Code:
    public double calc(double last, double first)
    {
        int k,t;
        double sum;
        sum=0;

        for(k=(int)last; k>=first; k--)
        {
            if(Data[k]==false)   t=0;   
            else                  t=1;
            
            sum= sum + (Math.pow(2, (last-k))*t);           
        }   
        return sum;       
    }


Vielen Dank 🙂
 
Das schöne ist ja, dass man bei Hex-Zahlen nicht rechnen muss. So mach ich das auf Papier:
Java:
import java.util.Map;
import static java.util.stream.Collectors.joining;

public class Test {
    static final Map<Character, String> hirn = Map.ofEntries(
        Map.entry('0', "0000"),
        Map.entry('1', "0001"),
        Map.entry('2', "0010"),
        Map.entry('3', "0011"),
        Map.entry('4', "0100"),
        Map.entry('5', "0101"),
        Map.entry('6', "0110"),
        Map.entry('7', "0111"),
        Map.entry('8', "1000"),
        Map.entry('9', "1001"),
        Map.entry('A', "1010"),
        Map.entry('B', "1011"),
        Map.entry('C', "1100"),
        Map.entry('D', "1101"),
        Map.entry('E', "1110"),
        Map.entry('F', "1111")
    );

    public static void main(String[] args) {
        System.out.println(args[0].chars()
            .mapToObj(c -> (char) c)
            .map(Character::toUpperCase)
            .map(hirn::get)
            .collect(joining()));
    }
}
 
Java:
static String hexToBin(String s) {
  return new BigInteger(s, 16).toString(2);
}


Super so hat es Funktioniert.

und hier ist meine Berechnung wie ich den Berechne.


Javascript:
package test_lö;

import java.math.BigInteger;

public class m {

    public static void main(String[] args) {
    String HexString="C8";
    String Results=hexToBin(HexString);       
        
        double Sum=calc(5,2,Results);
        
        //System.out.println(Results);
        System.out.println(String.valueOf(Sum));
    }

    public static String hexToBin(String s) {
        return new BigInteger(s,16).toString(2);       
    }
    
    public static double calc(int last, int first, String data)
    {
        int k,t;
        double sum;
        sum=0;
        
        String DataMessage= data.substring(first,last+1);
        sum= Double.parseDouble(DataMessage);       
        return sum;   
    }

}
 
Zum Code ein paar Anmerkungen: es gibt in Java Benennungskonventionen, an die man sich möglichst halten sollte. Dazu gehört, dass man Namen von Variablen, Parameter und Methoden in lowerCamelCase schreibt, Typbezeichner (wie Klassennamen) in UpperCamelCase.

Außerdem sollte man Sonderzeichen wie z. B. Umlaute nicht im Code verwenden (das gibt nur Ärger). Aussagekräftige Bezeichner wären auch nicht schlecht: eine Klasse "m", da stellt es einem ja die Zehennägel auf. Und auch Einrückungen sollte man richtig und einheitlich machen.
 
Zum Code ein paar Anmerkungen: es gibt in Java Benennungskonventionen, an die man sich möglichst halten sollte. Dazu gehört, dass man Namen von Variablen, Parameter und Methoden in lowerCamelCase schreibt, Typbezeichner (wie Klassennamen) in UpperCamelCase.

Außerdem sollte man Sonderzeichen wie z. B. Umlaute nicht im Code verwenden (das gibt nur Ärger). Aussagekräftige Bezeichner wären auch nicht schlecht: eine Klasse "m", da stellt es einem ja die Zehennägel auf. Und auch Einrückungen sollte man richtig und einheitlich machen.


Hallo mihe7,

Danke für deine Anmerkung.
 
Noch eine Kurze Frage.

Ich habe aus dem dem String ein Substring generiert.

String subString="0010";

Ich möchte diesen String zu Binär formatieren und dann den int wert daraus ermitteln.

Also ich erwarte aus dem String 0010 am ende ein int wert von 2.

wie kann ich es machen?


Vielen Dank.
 

Neue Themen


Zurück
Oben