2016-05-17 18 views
0

Ich konvertiere einige ganze Zahlen in Hexadezimalzahlen, aber das Problem, das ich habe, ist, wenn ich einen negativen Wert übergebe, um es in Hex umzuwandeln.Negative int in hexadezimale Konvertierung

Beispiel:

String satpos = "13.0"; 
String satposs=satpos.replaceAll("\\.", ""); 
int satposition = Integer.parseInt(satposs); 
String nids = Integer.toHexString(satposition); 
String finished = nids+"0000"; 

Anwendung gibt "820000" in diesem Fall, und das ist der richtige Wert ich brauche. Aber wenn ich übergeben:

String satpos = "-7.0"; 
String satposs=satpos.replaceAll("\\.", ""); 
int satposition = Integer.parseInt(satposs); 
String nids = Integer.toHexString(satposition); 
String finished = nids+"0000"; 

Anwendung gibt "ffffffba0000" aber ich sollte "DCA0000"

Jede Hilfe ist willkommen zu erhalten.

+3

Warum sollte '-70' 'DCA' sein? –

+0

Ich entwickle eine Satfinder-App, die alle Informationen über den Kanal aufnimmt und eine eindeutige ID erzeugt, die verwendet werden kann, um den Kanal vom DVB-Empfänger zu "rufen" und die Erklärung, die ich von Dev bekommen habe: 'Orbitalposition ist 13, 0 - drehe es in 130 (dez) => 82 (hex) - addiere 0000. Endergebnis Namespace = 820000' In diesem Fall ist die orbitale Position dieses Kanals -7.0 – Psycho

+2

Welche Darstellung haben Sie für negative ganze Zahlen? Java basiert auf der Verwendung von Zweierkomplement. Die hexadezimale Darstellung von 70 ist 46, und das Zweierkomplement ist ffffffba. Wenn Sie eine andere Darstellung für negative ganze Zahlen wünschen, müssen Sie sie angeben und die Konvertierung durchführen. –

Antwort

2

Basierend auf einem Kommentar von Andreas, hier ist ein Testprogramm, das den Wert drucken Sie wollen:

public class Test { 
    public static void main(String[] args) { 
    convert("13.0"); 
    convert("-7.0"); 
    } 

    private static void convert(String satpos) { 
    String satposs = satpos.replaceAll("\\.", ""); 
    int satposition = Integer.parseInt(satposs); 
    if (satposition < 0) { 
     satposition += 3600; 
    } 
    String nids = Integer.toHexString(satposition); 
    String finished = nids + "0000"; 
    System.out.println(finished); 
    } 

} 

Wenn der Winkel negativ ist, fügen Sie 3600, weil der Winkel in Zehnteln Grad ist.

+0

Danke, ich habe nicht grad darüber nachgedacht, jetzt ist alles klar als Tag. Sie alle haben so viel geholfen – Psycho

Verwandte Themen