2016-05-17 11 views
0

Je veux sérialiser une structure dans CBOR et l'imprimer, mais je ne sais pas comment valider que la valeur imprimée est correcte. J'ai utilisé CBOR.me, mais chaque fois que je place la sortie dans cbor.me il signale Out of bytes to decode: 753 + 19 > 753753 est le nombre d'octets de CBOR fourni, j'obtiens cette erreur indépendamment des octets. Cela se produit indépendamment du fait que j'utilise serde_cbor::to_vec ou serde_cbor::to_vec_sd.Comment imprimer les CBOR en cours de validité en utilisant serde_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!(""); 
} 

Répondre

2

Voici ce que votre sortie et la sortie correcte serait:

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

Voyez-vous le problème?

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

Vous imprimez des valeurs comme hexadécimal, mais pas les zéro rembourrage à 2 caractères:

print!("{:02x}", byte);