第二章介绍了Rust语言基础语法等,Rust语法有一些和C相同也有些有较大的不同,也有一些概念比较不一样。先概览下本章。
2.12介绍了命令行参数
2.13介绍了文件的读取,
我们基于此来来实现一个实用的程序,
嵌入式开发经常需要二进制到16进制文本转换,比如二进制转为数组,我们就基于此来实现一个将二进制文件转为16进制文本的工具。
use std::fs::File;
use std::env;
use std::io::prelude::*;
fn main() -> std::io::Result<()> {
let mut param=env::args();
if param.len() != 3{
Err(std::io::Error::new(std::io::ErrorKind::Other,"usage:bin2hex infile outfile"))
}
else{
let _=param.next();
let inputfile=param.next();
let outputfile=param.next();
let mut _inputfile = File::open(inputfile.unwrap())?;
let mut _outputfile= File::create(outputfile.unwrap())?;
let mut buffer:[u8;16]=[0;16];
while let std::io::Result::Ok(len) = _inputfile.read(&mut buffer){
//println!("{}",len);
if len == 0 {
break;
}
else{
for i in 0..len{
let _ = _outputfile.write_fmt(format_args!("{:#02x},",buffer));
//print!("{:02x} ",buffer);
}//println!("\r\n");
}
}
Ok(())
}
}
编译
rustc bin2hex.rs
运行
bin2hex.exe in.bin out.txt
测试如下
可以看出Rust虽然不是面向对象的编程语言,但是借鉴了很多面向对象的思想,以上可以看出实现需求的功能还是比较简单的。