2016-05-17 9 views
0

構造体をCBORにシリアル化して印刷したいのですが、印刷された値が正しいことを検証する方法がわかりません。私はCBOR.meを使用しましたが、出力をcbor.meに置くたびにOut of bytes to decode: 753 + 19 > 753と報告されています。ここで、753はCBORのバイト数です。バイトに関係なくこのエラーが発生します。これは、serde_cbor::to_vec、またはserde_cbor::to_vec_sdのいずれを使用するかにかかわらず発生します。serde_cborを使って有効なCBORを印刷するには?

#![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!(""); 
} 

答えて

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 

あなたは16進数の値をプリントアウトしますが、2つの文字にそれらをゼロパディングされていません。

print!("{:02x}", byte); 
関連する問題