如何使用serde_cbor打印有效的CBOR?

时间:2016-05-17 19:05:46

标签: rust 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 个答案:

答案 0 :(得分:2)

这是你的输出和正确的输出:

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