shortToBinary

regalhcs1

Neues Mitglied
Hey Leute,

ich bin schon die ganze Zeit beim herumtüfteln und komme nicht auf eine Lösung!

Also meine Problem ist folgendes:
Ich möchte eine short[] in eine binären String umwandeln ... Schon und gut, meine Methode funktioniert eigentlich , aber wenn z.B. im Short[] 0xF000 oder 0x000F steht dann bekomme ich folgende Exception :
Code:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 64
	at java.lang.String.substring(String.java:1951)
	at MobileEVotingSystem_new.Auswertung.shortToBinary(Auswertung.java:38)
	at MobileEVotingSystem_new.Auswertung.main(Auswertung.java:146)
Java Result: 1
Das liegt wahrscheinlich daran, dass einer der substrings dann leer ist, aber wie kann ich das sonst lösen?

Quellcode in JAVA:
Code:
    public static String shortToBinary(short[] bytes) 
    {
        byte[] ret = new byte[2];
       
        StringBuilder sb = new StringBuilder();
        int v;
        for ( int j = 0; j < bytes.length; j++ ) 
        {
            
            ret[1] = (byte)(bytes[j] & 0xff);
            ret[0] = (byte)((bytes[j] >> 8) & 0xff);
            
            sb.append(Integer.toBinaryString(ret[1]));
            sb.append(Integer.toBinaryString(ret[0]));
        }
        
        String test = sb.toString();
        String sub1 = test.substring(24,32);
        String sub2 = test.substring(56, 64);
        String neu = String.format("%s%s",sub2,sub1);
        return neu;
    }

Habt ihr einen Lösungsvorschlag für dieses Problem?

Lg
regalhcs1
 
Zuletzt bearbeitet:

Joose

Top Contributor
Ich möchte eine short[] in eine binären String umwandeln ... Schon und gut, meine Methode funktioniert eigentlich , aber wenn z.B. im Short[] 0xF000 oder 0x000F steht dann bekomme ich folgende Exception :
Code:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 64
	at java.lang.String.substring(String.java:1951)
	at MobileEVotingSystem_new.Auswertung.shortToBinary(Auswertung.java:38)
	at MobileEVotingSystem_new.Auswertung.main(Auswertung.java:146)
Java Result: 1
Das liegt wahrscheinlich daran, dass einer der substrings dann leer ist, aber wie kann ich das sonst lösen?

Habt ihr einen Lösungsvorschlag für dieses Problem?

Indem du vorher den String "test" auf die Länge überprüfst. Und das substring nicht ausführst wenn der String zu kurz ist.
Oder du kontrollierst den String den du von "toBinaryString" geliefert bekommst auf Korrektheit und passt ihn gegebenenfalls an.
 

Oben