实例-rust-string和bytes转换实例2

Cargo.toml

[package]
name = "rust-example10"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
hex = "0.4.2"
serde = { version = "1.0.133", features = ["derive"] }
serde_json = "1.0.75"

main.rs

#![allow(non_snake_case)]
// #![allow(unused)]
use std::str::from_utf8;
use serde::Serialize;
use serde::Deserialize;

fn main() {

    // 将十六进制字节串String转换为字节数组Vec<u8>
    // 此十六进制字节串由python生成
    let xx1 = hex::decode ("7b0a20202020226e5f6c61796572223a20382c0a20202020224c223a205b0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e302c0a2020202020202020313030303030303030303030303030302e300a202020205d2c0a2020202022456d6d223a205b0a20202020202020205b0a202020202020202020202020393835352c0a20202020202020202020202031323030302c0a20202020202020202020202031313030302c0a202020202020202020202020393030302c0a20202020202020202020202031333030302c0a20202020202020202020202031333030302c0a2020202020202020202020203732302c0a20202020202020202020202034302e380a20202020202020205d0a202020205d2c0a20202020226d75223a205b0a2020202020202020302e32352c0a2020202020202020302e32352c0a2020202020202020302e32352c0a2020202020202020302e342c0a2020202020202020302e32352c0a2020202020202020302e32352c0a2020202020202020302e33352c0a2020202020202020302e340a202020205d2c0a202020202268223a205b0a2020202020202020302e30342c0a2020202020202020302e30362c0a2020202020202020302e30382c0a2020202020202020302e312c0a2020202020202020302e31382c0a2020202020202020302e31382c0a2020202020202020302e320a202020205d2c0a202020202250223a20302e372c0a202020202251223a20302c0a202020202261223a20302e313036352c0a202020202270223a205b0a2020202020202020302e370a202020205d2c0a202020202271223a205b0a2020202020202020300a202020205d2c0a202020202278785f223a205b0a2020202020202020302c0a2020202020202020300a202020205d2c0a202020202279795f223a205b0a20202020202020202d302e31353937352c0a2020202020202020302e31353937350a202020205d2c0a20202020226e5f64223a2035302c0a202020202275707065725f68223a203430302c0a20202020226e5f69223a203230302c0a20202020226e5f736572696573223a20312c0a20202020227878223a205b0a2020202020202020302e3030312c0a2020202020202020302e3030312c0a2020202020202020302e3030312c0a2020202020202020302e3030310a202020205d2c0a20202020227979223a205b0a2020202020202020302e3030312c0a2020202020202020302e3032363632352c0a2020202020202020302e3035342c0a2020202020202020302e31353937350a202020205d2c0a20202020227a7a223a205b0a2020202020202020302c0a2020202020202020302e30312c0a2020202020202020302e30342c0a2020202020202020302e30342c0a2020202020202020302e32382c0a2020202020202020302e32380a202020205d2c0a20202020224e4e223a205b0a2020202020202020312c0a2020202020202020312c0a2020202020202020312c0a2020202020202020322c0a2020202020202020342c0a2020202020202020350a202020205d0a7d").unwrap();  // 将bites转换为Vec<u8>
    println!("{:?} \n",xx1);

    // 将字节数组Vec<u8>转换为json字符串String
    let xx2 = from_utf8(&xx1).unwrap(); 
    println!("{:?} \n",xx2);

    // 将json字符串String转换为rust结构体Structure:方法一
    let v1: serde_json::Value = serde_json::from_str(xx2).unwrap();
    println!("n_layer = {}", v1["L"]);

    // 将json字符串String转换为rust结构体Structure:方法二--序列化与反序列化
    let deserialized:InputData = serde_json::from_str(&xx2).unwrap();
    println!("{:?}",deserialized);
    println!("{:?}",deserialized.n_layer); 
    println!("{:?}",deserialized.xx_); 
    
    

}


#[derive(Serialize, Deserialize,Debug)]
struct InputData {
    n_layer: i32,
    L: Vec<f64>,
    Emm: Vec<Vec<f64>>,
    mu: Vec<f64>,
    h: Vec<f64>,
    P: f64,
    Q: f64,
    a: f64,
    p: Vec<f64>,
    q: Vec<f64>,
    xx_: Vec<f64>,
    yy_: Vec<f64>,
    n_d: i32,
    upper_h: f64,
    n_i: i32,
    n_series: i32,
    xx: Vec<f64>,
    yy: Vec<f64>,
    zz: Vec<f64>,
    NN: Vec<i32>,
}
posted @   Nazorine  阅读(215)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示