2017-05-18 5 views
1

Also lassen Sie uns sagen, dass ich zwei von einem Gerät auf meine Software kommt unsigned Bytes haben:Umwandlung von zwei unsigned Bytes in einen int in Java

Und ich kann ihr Wert gelesen von:

int first = buffer[0] & 0xFF; 
int second = buffer[1] & 0xFF; 

Und wie kann man dann diese beiden Zahlen in Java in ein int umwandeln?

Kurz gesagt: konvertieren Byte ohne Vorzeichen Puffer Array in ein int

Weitere Details:

Also lassen Sie uns sagen, ob ich ein unterzeichnet Byte Array haben, kann ich es durch diese in einen int umwandeln übrigens:

int val = ((bytes[0] & 0xff) << 8) | (bytes[1] & 0xff); 

aber dann, was soll ich tun, um eine Byte ohne Vorzeichen Array in einen int konvertieren?

// AKTUALISIERT:

einfach die Art und Weise, es zu konvertieren herausgefunden:

private int toInt(byte[] b) { 
    int x = (0 << 24) | (0 << 16) 
      | ((b[1] & 0xFF) << 8) | ((b[0] & 0xFF) << 0); 
    return x; 
} 
+0

Können Sie bitte Ihre Anfrage ausarbeiten. –

+0

aktualisiert ......... – Forrest

Antwort

0

Ich weiß nicht, ob das ist, was Sie wollen, aber Sie können es auf diese Weise tun:

int b1 = ...; // first byte 
    int b2 = ...; // second byte 
    String binaryString = pad0s(Integer.toBinaryString(b1), 8) + pad0s(Integer.toBinaryString(b2), 8); 
    System.out.println(Integer.valueOf(binaryString, 2)); 

Wo pad0s ist definiert als:

private static String pad0s(String str, int length) { 
    if (str.length() >= length) return str; 
    int diff = length - str.length(); 
    StringBuilder sb = new StringBuilder(str); 
    for (int i = 0 ; i < diff ; i++) { 
     sb.insert(0, "0"); 
    } 
    return sb.toString(); 
} 
+0

habe gerade den Weg gefunden, es zu tun, aber danke für deine Hilfe trotzdem :) – Forrest

Verwandte Themen