2017-09-01 4 views
0

Je reçois des données du serveur - est un tableau octet [] codé CBOR et pour décoder cela, j'utilise l'implémentation cbor-java.Java - Comment décoder CBOR encodé byte [] array?

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) { 
    } 

Si vous avez une certaine expérience avec cela, pouvez-vous me dire comment je peux obtenir le contenu décodée du tableau, pas l'objet DataItem.

+0

Qu'avez-vous essayé jusqu'à présent? –

+0

@AbhijitSarkar J'utilise la réponse ci-dessous, et l'adapter pour mon cas –

Répondre

0

Le DataItem est déjà très proche de ce que vous voulez. Tout d'abord, vous devez vérifier quel type DataItem est:

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

Avec que vous pouvez lire les données qui se trouve dans votre tableau d'octets. Vous avez juste besoin de l'adapter aux valeurs dont vous avez besoin.

+0

Désolé pour le retard, mais vous me mettez sur la bonne voie.Thx –