Rust文件返回错误值

ojsjcaue  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(124)

我正在尝试将一个非常简单的文件读入向量。

fn read_file(file_name: &str) -> Vec<u8> {
    let mut file = File::open(file_name).unwrap();
    let mut contents = Vec::new();
    //read file into the vec
    for i in 0..file.read_to_end(&mut contents).unwrap() {
        contents.push(i as u8);
    }
    contents
}

我的档案是这样的:

5
10
15
4
8
2

但有趣的是,当我阅读文件并打印内容时,我得到:

[53, 13, 10, 49, 48, 13, 10, 49, 53, 13, 10, 52, 13, 10, 56, 13, 10, 50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]

显然,我做错了什么,但我的问题实际上是,拉斯特在哪里找到所有这些值?

kqlmhetl

kqlmhetl1#

数字是文件的字节数。

53 = b'5'
13 = b'\r'
10 = b'\n'
49 = b'1'
48 = b'0'
...

如果你想得到实际的数字,你必须把文件解析成行,然后把行解析成数字。

use std::io::{BufReader,BufRead};
fn read_file(file_name: &str) -> Vec<u8> {
    let file = File::open(file_name).unwrap();
    let bufread = BufReader::new(file);
    bufread.lines().map(|x| {
        x
            .unwrap_or_default()
            .parse::<u8>()
            .unwrap_or_default()
    }).collect()
}

相关问题