2017-09-01 947 views
0

我從服務器獲取數據 - 是一個CBOR編碼的字節[]數組,並解碼此我使用cbor-java實現。Java - 如何解碼CBOR編碼的byte []數組?

byte[] decodedMessage = { 0x78, (byte)0x9c, 0x5b, (byte)0xe4, 0x58, 0x10} 
    ByteArrayInputStream bais = new ByteArrayInputStream(decodedMessage); 
    List<DataItem> dataItems = new CborDecoder(bais).decode(); 
    for(DataItem dataItem : dataItems) { 
    } 

如果你有這樣的一些經驗,你能解釋一下我怎樣可以得到陣列的解碼的內容,而不是DataItem對象。

+0

到目前爲止您嘗試了什麼? –

+0

@AbhijitSarkar我用答案波紋管,並適應我的情況 –

回答

0

DataItem已經非常接近你想要的。首先你需要檢查DataItem是哪種類型:

for (DataItem dataItem : dataItems) { 
    System.out.println("the type of this dataItem is " + dataItem.getMajorType()); 
    switch(dataItem.getMajorType()) { 
     UNSIGNED_INTEGER: 
      UnsignedInteger unsignedInteger = (UnsignedInteger) dataItem; 
      System.out.println("the value of this dataItem is " + unsigendInteger.getValue()); 
     /* ... add missing ones */ 
     default: 
      System.out.println("unknown type: " + dataItem.getMajorType()); 
    } 
} 

這樣你就可以讀取字節數組中的數據了。 您只需根據需要調整它即可。

+0

對不起,遲到了,但你讓我正確的方式.Thx –