2017-05-18 17 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

相关问题