这是从二进制文件中读取结构的最自然的方法吗?

时间:2016-10-20 02:41:35

标签: rust

我刚刚意识到这与What is the best way to parse binary protocols with Rust

非常相似

这是使用Rust从二进制文件读取结构的最自然方式吗?它有效,但似乎有点奇怪(为什么我只能填充结构批发?)。

extern crate byteorder;
use byteorder::{ByteOrder, LittleEndian};

struct Record {
    latch: u32,
    total_energy: f32,
    x_cm: f32,
    y_cm: f32,
    x_cos: f32,
    y_cos: f32,
    weight: f32
}

impl Record {
    fn make_from_bytes(buffer: &[u8]) -> Record {
        Record {
            latch: LittleEndian::read_u32(&buffer[0..4]),
            total_energy: LittleEndian::read_f32(&buffer[4..8]),
            x_cm: LittleEndian::read_f32(&buffer[8..12]),
            y_cm: LittleEndian::read_f32(&buffer[12..16]),
            x_cos: LittleEndian::read_f32(&buffer[16..20]),
            y_cos: LittleEndian::read_f32(&buffer[20..24]),
            weight: LittleEndian::read_f32(&buffer[24..28]),
        }
    }
}

1 个答案:

答案 0 :(得分:3)

查看nom包:它对于解析二进制数据非常有用。

使用getData(),您可以使用以下内容编写解析器(未经测试):

getData()