Rust字节格式化库pretty-bytes的使用,高效转换文件大小和字节数为人类可读格式
Rust字节格式化库pretty-bytes的使用,高效转换文件大小和字节数为人类可读格式
简介
pretty-bytes
是一个Rust库,用于将字节数转换为人类可读的字符串格式。例如:1337 → 1.34 kB。这对于显示文件大小给用户非常有用。
安装
作为CLI工具安装
cargo install pretty-bytes
作为库安装
在项目中运行以下命令:
cargo add pretty-bytes
或者在Cargo.toml中添加:
pretty-bytes = "0.2.2"
使用示例
CLI使用方式
$ pretty-bytes 1337
1.34 kB
$ echo 1337 | pretty-bytes
1.34 kB
API使用方式
extern crate pretty_bytes;
use pretty_bytes::converter::convert;
println!("{}", convert(1337_f64));
完整示例代码
extern crate pretty_bytes;
use pretty_bytes::converter::convert;
fn main() {
// 转换不同的字节大小
println!("1000 bytes: {}", convert(1000_f64)); // 1 kB
println!("1024 bytes: {}", convert(1024_f64)); // 1.02 kB
println!("1_000_000 bytes: {}", convert(1_000_000_f64)); // 1 MB
println!("1_048_576 bytes: {}", convert(1_048_576_f64)); // 1.05 MB
println!("1_000_000_000 bytes: {}", convert(1_000_000_000_f64)); // 1 GB
println!("1_073_741_824 bytes: {}", convert(1_073_741_824_f64)); // 1.07 GB
// 示例:转换文件大小
let file_size = 2_500_000; // 2.5MB文件
println!("文件大小: {}", convert(file_size as f64)); // 2.5 MB
}
注意事项
- 该库将自动选择合适的单位(B, kB, MB, GB, TB等)
- 默认使用1000作为基数(1kB = 1000B)
- 支持浮点数输入
许可证
MIT
1 回复
Rust字节格式化库pretty-bytes的使用指南
pretty-bytes
是一个实用的Rust库,用于将字节大小转换为人类可读的格式(如"1.2 MB"或"3.4 GB")。它特别适合在需要显示文件大小、内存使用量或网络传输量的应用中。
安装
在Cargo.toml
中添加依赖:
[dependencies]
pretty-bytes = "0.4"
基本用法
简单转换
use pretty_bytes::converter::convert;
fn main() {
println!("{}", convert(1000_f64)); // "1 kB"
println!("{}", convert(1024_f64)); // "1.02 kB"
println!("{}", convert(1_000_000_f64)); // "1 MB"
println!("{}", convert(1_048_576_f64)); // "1.05 MB"
}
自定义选项
use pretty_bytes::converter::convert;
let options = pretty_bytes::Options {
binary: true, // 使用二进制前缀 (KiB, MiB 等)
signed: false, // 是否显示符号
thousands_separator: Some(','), // 千位分隔符
};
println!("{}", convert(1_048_576_f64, options)); // "1 MiB"
高级功能
处理负数
use pretty_bytes::converter::convert;
println!("{}", convert(-1_000_000_f64)); // "-1 MB"
不同单位系统
use pretty_bytes::converter::convert;
// 十进制单位 (KB, MB, GB)
println!("{}", convert(1_000_000_f64)); // "1 MB"
// 二进制单位 (KiB, MiB, GiB)
let options = pretty_bytes::Options {
binary: true,
..Default::default()
};
println!("{}", convert(1_048_576_f64, options)); // "1 MiB"
自定义小数位数
use pretty_bytes::converter::convert;
let options = pretty_bytes::Options {
decimal_places: 4, // 保留4位小数
..Default::default()
};
println!("{}", convert(1_234_567_f64, options)); // "1.2346 MB"
实际应用示例
文件大小格式化
use std::fs;
use pretty_bytes::converter::convert;
fn get_file_size(path: &str) -> String {
let metadata = fs::metadata(path).unwrap();
convert(metadata.len() as f64)
}
println!("文件大小: {}", get_file_size("Cargo.toml"));
网络流量监控
use pretty_bytes::converter::convert;
struct NetworkStats {
bytes_received: u64,
bytes_sent: u64,
}
impl NetworkStats {
fn display(&self) {
println!("接收: {}", convert(self.bytes_received as f64));
println!("发送: {}", convert(self.bytes_sent as f64));
}
}
完整示例demo
以下是一个整合了多种功能的完整示例:
use pretty_bytes::converter::convert;
use pretty_bytes::Options;
use std::fs;
fn main() {
// 基本转换示例
println!("=== 基本转换 ===");
println!("1000 bytes: {}", convert(1000_f64)); // 1 kB
println!("1024 bytes: {}", convert(1024_f64)); // 1.02 kB
println!("1,000,000 bytes: {}", convert(1_000_000_f64)); // 1 MB
// 自定义选项示例
println!("\n=== 自定义选项 ===");
let options = Options {
binary: true,
signed: true,
thousands_separator: Some(','),
decimal_places: 3,
};
println!("1,048,576 bytes: {}", convert(1_048_576_f64, options)); // 1.000 MiB
// 文件大小示例
println!("\n=== 文件大小 ===");
match fs::metadata("Cargo.toml") {
Ok(metadata) => {
println!("Cargo.toml 大小: {}", convert(metadata.len() as f64));
}
Err(e) => println!("无法获取文件信息: {}", e),
}
// 网络流量示例
println!("\n=== 网络流量 ===");
let stats = NetworkStats {
bytes_received: 2_500_000,
bytes_sent: 1_300_000,
};
stats.display();
}
struct NetworkStats {
bytes_received: u64,
bytes_sent: u64,
}
impl NetworkStats {
fn display(&self) {
println!("接收: {}", convert(self.bytes_received as f64));
println!("发送: {}", convert(self.bytes_sent as f64));
}
}
注意事项
- 默认情况下使用十进制单位(KB、MB、GB等),1 KB = 1000 bytes
- 可以通过设置
binary: true
来使用二进制单位(KiB、MiB、GiB等),1 KiB = 1024 bytes - 输入应为
f64
类型,整数需要转换 - 支持从字节(10^0)到尧字节(10^24)的范围
pretty-bytes
库简单易用,是处理字节格式化需求的理想选择,特别适合需要向用户展示存储空间、文件大小或网络流量的应用程序。