2017-09-01 944 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 –