2013-10-03 72 views
0

我使用getInputStreamsocket;但是,當我想將字節數組轉換爲長時,它將得到錯誤的數字。當我使用調試模式查看字節數組的每個值時,我發現該值將被簽名。我怎樣才能將我的簽名字節數組轉換爲無符號數組?或者我錯誤地認爲問題與signed問題無關。如果有任何信息不足,請告訴我。謝謝。android如何從getinputstream獲取無符號字節數組

下面是我的代碼:

InputStream inputStream = socket.getInputStream(); 

byte[] fileNameBytes = new byte[8]; 
byte[] totalLengthBytes = new byte[8]; 
try { 
    inputStream.read(fileNameBytes); 
    inputStream.read(totalLengthBytes); 
} catch (Exception ex) { 
    Log.e("Error in InputStream: " + ex.getMessage()); 
} 

totalLength = byteArrayToLong(totalLengthBytes); 

回答

0

的Java有符號/無符號的問題。即,沒有未簽名。當我需要將原始字節上傳到期望字節無符號的C#Web服務(即0到255和-127到+127)時,我使用了我並不自豪的代碼,如下所示:

 List<Integer> l = new ArrayList<Integer>(); 
     if (bytearray != null) { 
      for (int i = 0; i < bytearray.length; ++i) 
      { 
       l.add(Integer.valueOf((char) bytearray [i]) & 0x00FF); 
      } 
     } 

bytearraybyte[]

相關問題