2017-09-01 1 views
0

Ich bekomme Daten vom Server - ist ein CBOR-codiertes byte [] Array und um dies zu decodieren verwende ich cbor-java Implementierung.Java - Wie decodiere CBOR-codiertes 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) { 
    } 

Wenn Sie einige Erfahrung mit diesem haben, können Sie mir erklären, wie ich den entschlüsselten Inhalt des Arrays zu bekommen, nicht das DataItem Objekt.

+0

Was haben Sie bisher versucht? –

+0

@AbhijitSarkar Ich benutze Antwort unten, und passen Sie es für meinen Fall –

Antwort

0

Das DataItem ist schon sehr nah an dem, was Sie wollen. Zuerst müssen Sie prüfen, welche Art der DataItem ist:

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

Damit Sie die Daten lesen kann, die in Ihrem Byte-Array ist. Sie müssen es nur für die Werte anpassen, die Sie benötigen.

+0

Entschuldigung für zu spät, aber Sie setzen mich auf richtigen Weg. Thx –