首页 > Python基础教程 >
-
开源项目Humanizer介绍(4)
20、字节大小
Humanizer包含出色的ByteSize库的端口。 对ByteSize进行了许多更改和添加,以使与ByteSize的交互更容易且与Humanizer API更加一致。 这是一些如何从数字转换为字节大小以及在大小幅值之间转换的示例:
var fileSize = (10).Kilobytes(); fileSize.Bits => 81920 fileSize.Bytes => 10240 fileSize.Kilobytes => 10 fileSize.Megabytes => 0.009765625 fileSize.Gigabytes => 9.53674316e-6 fileSize.Terabytes => 9.31322575e-9
有几种扩展方法可让您将数字转换为ByteSize实例:
3.Bits(); 5.Bytes(); (10.5).Kilobytes(); (2.5).Megabytes(); (10.2).Gigabytes(); (4.7).Terabytes();
您还可以使用+/-运算符和加/减方法对值进行加/减:
var total = (10).Gigabytes() + (512).Megabytes() - (2.5).Gigabytes(); total.Subtract((2500).Kilobytes()).Add((25).Megabytes());
ByteSize对象包含两个属性,它们代表最大的度量标准前缀符号和值:
var maxFileSize = (10).Kilobytes(); maxFileSize.LargestWholeNumberSymbol; // "KB" maxFileSize.LargestWholeNumberValue; // 10
如果要使用字符串表示形式,则可以在ByteSize实例上互换调用ToString或Humanize:
7.Bits().ToString(); // 7 b 8.Bits().ToString(); // 1 B (.5).Kilobytes().Humanize(); // 512 B (1000).Kilobytes().ToString(); // 1000 KB (1024).Kilobytes().Humanize(); // 1 MB (.5).Gigabytes().Humanize(); // 512 MB (1024).Gigabytes().ToString(); // 1 TB
您还可以选择提供期望的字符串表示形式的格式。 格式化程序可以包含要显示的值的符号:b,B,KB,MB,GB,TB。 格式化程序使用内置的double.ToString方法,将#。##作为默认格式,该格式将数字四舍五入到小数点后两位:
var b = (10.505).Kilobytes(); // Default number format is #.## b.ToString("KB"); // 10.52 KB b.Humanize("MB"); // .01 MB b.Humanize("b"); // 86057 b // Default symbol is the largest metric prefix value >= 1 b.ToString("#.#"); // 10.5 KB // All valid values of double.ToString(string format) are acceptable b.ToString("0.0000"); // 10.5050 KB b.Humanize("000.00"); // 010.51 KB // You can include number format and symbols b.ToString("#.#### MB"); // .0103 MB b.Humanize("0.00 GB"); // 0 GB b.Humanize("#.## B"); // 10757.12 B
如果要使用完整单词的字符串表示形式,可以在ByteSize实例上调用ToFullWords:
7.Bits().ToFullWords(); // 7 bits 8.Bits().ToFullWords(); // 1 byte (.5).Kilobytes().ToFullWords(); // 512 bytes (1000).Kilobytes().ToFullWords(); // 1000 kilobytes (1024).Kilobytes().ToFullWords(); // 1 megabyte (.5).Gigabytes().ToFullWords(); // 512 megabytes (1024).Gigabytes().ToFullWords(); // 1 terabyte
没有Dehumanize方法可以将字符串表示形式转换回ByteSize实例。 但是您可以对ByteSize使用Parse和TryParse来做到这一点。 像其他TryParse方法一样,ByteSize.TryParse返回布尔值,该值指示解析是否成功。 如果解析了该值,则将其输出到提供的out参数: