Как распечатать действительный 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!("");
}
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);