2017-09-01 11 views
0

私はサーバからデータを取得します - CBORでエンコードされたバイト[]配列であり、これをデコードするために私はcbor-javaの実装を使用しています。Java - どのようにCBORエンコードバイト[]配列をデコードしますか?

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

遅くまで申し訳ありませんが、あなたは正しいway.Thx –

関連する問題