【问题标题】:Java - How decode CBOR encoded byte[] array?Java - 如何解码 CBOR 编码的字节 [] 数组?
【发布时间】:2017-09-01 13:34:11
【问题描述】:

我从服务器获取数据 - 是一个 CBOR 编码的字节 [] 数组,我使用 cbor-java 实现来解码它。

    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 对象。

【问题讨论】:

  • @AbhijitSarkar 我使用下面的答案,并根据我的情况进行调整

标签: java arrays cbor


【解决方案1】:

您是否考虑过使用jackson-dataformats-binary?该库有very good performance,就像使用 JSON 一样。

【讨论】:

    【解决方案2】:

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

    这样您就可以读取字节数组中的数据。 你只需要根据你需要的值来调整它。

    【讨论】:

      猜你喜欢
      • 2021-11-12
      • 2011-10-04
      • 2016-12-27
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2018-10-19
      相关资源
      最近更新 更多