Как распечатать действительный CBOR, используя serde_cbor?

Я хочу сериализовать структуру в CBOR и распечатать ее, однако я не знаю, как проверить правильность напечатанного значения. Я использовал CBOR.me, но каждый раз, когда я помещаю вывод в cbor.me, он сообщает Out of bytes to decode: 753 + 19 > 753, где 753 — количество байтов. предоставленного CBOR, я получаю эту ошибку независимо от байтов. Это происходит независимо от того, использую ли я serde_cbor::to_vec или serde_cbor::to_vec_sd.

#![feature(custom_derive, plugin)]
#![plugin(serde_macros)]

extern crate serde;
extern crate serde_cbor;


#[derive(Deserialize, Serialize)]
struct Points {
    x: u8,
    y: u8,
}


fn main() {
    let points = Points {x: 1, y: 1};
    let cbor = serde_cbor::to_vec(&points);

    for byte in cbor {
        print!("{:x}", byte);
    }

    println!("");
}

person XAMPPRocky    schedule 17.05.2016    source источник


Ответы (1)


Вот каким будет ваш вывод и правильный вывод:

a2 61 78 16 17 91
a2 61 78 01 61 79 01

Ты видишь проблему?

a2 61 78  1 61 79  1
a2 61 78 01 61 79 01

Вы печатаете значения как шестнадцатеричные, но не добавляете их нулями до 2 символов:

print!("{:02x}", byte);
person Shepmaster    schedule 17.05.2016