2017-05-18 18 views
1
一個int

所以我們可以說我有從一個設備來我的軟件兩個無符號字節:轉換兩個無符號字節在Java

我可以通過閱讀他們的價值:

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

而且那麼如何將這兩個數字轉換爲Java中的int?

簡而言之:緩衝數組轉換無符號字節爲一個int

更多細節:

所以我們可以說,如果我有一個符號字節數組,我可以通過這個轉換爲int方法:

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

但後來我應該怎麼辦轉換的無符號字節數組爲int?

//更新:

就想出辦法將它轉換:

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

請您詳細說明您的查詢。 –

+0

更新........ – Forrest

回答

0

我不知道這是否是你想要的,但你可以這樣來做:

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)); 

pad0s被定義爲:

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

只是想出了辦法,但無論如何感謝您的幫助:) – Forrest

相關問題