0

我从服务器获取数据 - 是一个 CBOR 编码的 byte[] 数组,为了解码这个我正在使用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对象。

4

2 回答 2

2

您是否考虑过使用jackson-dataformats-binary?该库具有非常好的性能,就像使用 JSON 一样。

于 2017-11-07T21:51:06.173 回答
1

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

有了它,您可以读取字节数组中的数据。你只需要根据你需要的值来调整它。

于 2017-09-01T14:43:48.517 回答