开发工具【免费下载链接】HumanizerHumanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities项目地址https://gitcode.com/gh_mirrors/hu/Humanizer点击查看免费下载Humanizer 的ByteSizeExtensions是一个静态扩展类为 .NET 开发者提供了一组从任意数值类型构建ByteSize值、将其格式化为2 GB这类人类可读文本以及基于时间间隔计算传输速率如400 B/s的便捷 API。本指南以 2.14.1 版 API 文档为骨架结合当前仓库源码与测试用例逐方法讲解参数语义、格式化规则与本地化行为帮助你直接在项目中使用这些扩展方法完成文件大小展示、存储容量统计与网络吞吐量格式化等任务。类概览一个静态扩展类零配置接入ByteSizeExtensions定义在 src/Humanizer/Bytes/ByteSizeExtensions.cs位于Humanizer命名空间下声明为public static class ByteSizeExtensions继承链为System.Object → ByteSizeExtensions。它的角色非常纯粹把数值 单位的直觉用法转译为对ByteSize结构体的构造调用从而让你写出10.Megabytes()而不是ByteSize.FromMegabytes(10)。从 2.14.1 API 文档看该类包含四组方法方法族方法数作用Bits(...)7 个重载将输入视为比特bit构建ByteSizeBytes(...)8 个重载将输入视为字节byte构建ByteSizeKilobytes / Megabytes / Gigabytes / Terabytes(...)各 8 个重载按对应单位换算构建ByteSizeHumanize(...)3 个重载将ByteSize转成人类可读字符串如2 GBPer(...)1 个方法结合TimeSpan生成可操作的ByteRate速率对象所有单位构建方法的返回值都是Humanizer.Bytes.ByteSize详见 Humanizer.Bytes.ByteSize.mdPer返回Humanizer.Bytes.ByteRate详见 Humanizer.Bytes.ByteRate.md。单位构建方法8 种数值类型的全覆盖重载Bits(...)把整数视为比特数文档中Bits提供 7 个重载覆盖byte、sbyte、short、ushort、int、uint、long全部整数类型public static Humanizer.Bytes.ByteSize Bits(this byte input); public static Humanizer.Bytes.ByteSize Bits(this int input); public static Humanizer.Bytes.ByteSize Bits(this long input); public static Humanizer.Bytes.ByteSize Bits(this sbyte input); public static Humanizer.Bytes.ByteSize Bits(this short input); public static Humanizer.Bytes.ByteSize Bits(this uint input); public static Humanizer.Bytes.ByteSize Bits(this ushort input);每个重载都只是对静态工厂方法ByteSize.FromBits(input)的一行转发见 ByteSizeExtensions.cs。在 ByteSize.cs 中FromBits的实现是new(value / (double)BitsInByte)其中BitsInByte常量值为8——也就是说8.Bits()会得到Bits 8, Bytes 1的ByteSize。这一点被测试 CreatingTests.cs 明确验证var result ByteSize.FromBits(8); Assert.Equal(8, result.Bits); Assert.Equal(1, result.Bytes);Bytes(...)把数值视为字节数Bytes是唯一同时支持double与全部整数类型的单位方法共 8 个重载因此可以直接传入带小数的字节数public static ByteSize Bytes(this byte input); public static ByteSize Bytes(this double input); public static ByteSize Bytes(this int input); public static ByteSize Bytes(this long input); public static ByteSize Bytes(this sbyte input); public static ByteSize Bytes(this short input); public static ByteSize Bytes(this uint input); public static ByteSize Bytes(this ushort input);实现上全部转发ByteSize.FromBytes(input)见 ByteSizeExtensions.cs。FromBytes直接以字节数为内部存储值测试 CreatingTests.cs 验证了1.5.Bytes()会得到Bytes 1.5, Bits 12——即Bits属性按Math.Ceiling(byteSize * 8)向上取整ByteSize.cs。Kilobytes / Megabytes / Gigabytes / Terabytes(...)按 1024 进制换算这四个方法族各提供 8 个重载byte、sbyte、short、ushort、int、uint、double、long语义分别是将输入视为 KB / MB / GB / TB。它们分别转发到ByteSize.FromKilobytes(value)换算因子BytesInKilobyte 1024ByteSize.FromMegabytes(value)换算因子BytesInMegabyte 1,048,576ByteSize.FromGigabytes(value)换算因子BytesInGigabyte 1,073,741,824ByteSize.FromTerabytes(value)换算因子BytesInTerabyte 1,099,511,627,776常量定义见 ByteSize.cs。注意 Humanizer 采用二进制进制1 KB 1024 B作为这些方法的默认换算标准与操作系统文件系统惯例一致。测试 CreatingTests.cs 给出精确换算证据var result ByteSize.FromKilobytes(1.5); Assert.Equal(1536, result.Bytes); // 1.5 * 1024 Assert.Equal(1.5, result.Kilobytes); var result ByteSize.FromGigabytes(1.5); Assert.Equal(1610612736, result.Bytes); // 1.5 * 1073741824扩展方法层面ByteSizeExtensionsTests.cs 逐类型验证了size.Terabytes()等价于ByteSize.FromTerabytes(size)L5-L8、size.Gigabytes()等价于ByteSize.FromGigabytes(size)L76-L79等所有重载。Humanize(...)把字节数量变成人话Humanize是整套扩展方法的核心输出端文档给出三个重载签名如下public static string Humanize(this Humanizer.Bytes.ByteSize input, string format null); public static string Humanize(this Humanizer.Bytes.ByteSize input, string format, System.IFormatProvider formatProvider); public static string Humanize(this Humanizer.Bytes.ByteSize input, System.IFormatProvider formatProvider);三者统一描述为Turns a byte quantity into human readable form, eg 2 GB。参数含义input要格式化的ByteSize值format自定义数字格式串可空formatProvider用于数字与文化单元词本地化的IFormatProvider可空。默认行为自动选择最大的整单位不传format时Humanize直接委托input.ToString()见 ByteSizeExtensions.cs。ByteSize.ToString的规则是选择使数值绝对值 ≥ 1 的最大单位前缀。例如ByteSize.FromKilobytes(10.5).ToString()输出10.5 KB测试见 ToStringTests.csByteSize.FromMegabytes(0.5)会降级输出512 KBL70-L72。默认数字格式等价于0.##即最多保留两位小数并去掉多余的零——FromKilobytes(10.501)输出10.5 KB而不是10.501 KBToStringTests.cs。format 参数数字格式与单位 token 的混合format不只是一个数字格式串它可以同时包含数字占位符和单位 token。底层处理逻辑位于 ByteSize.cs若format为null或G统一替换为0.##若格式串中不含#或0数字占位符自动在前面拼接0.## 因此KB等价于0.## KB格式串中的#.##会被规范化为0.##检测格式串是否包含单位 tokenKB、MB、GB、TB、PB、EB等命中哪个 token 就以哪个单位输出数值其中KB/MB/GB/...的匹配不区分大小写而字节符号B与比特符号b严格区分大小写若未命中任何 token则回退到最大整单位策略。测试 ByteSizeExtensionsTests.cs 提供了大量可直接复用的组合示例// 指定单位2 GB 的数值按 GB token 原样输出 2.Gigabytes().Humanize(MB) // 2048 MB 2.Terabytes().Humanize(GB) // 2048 GB 2000.Bytes().Humanize(KB) // 1.95 KB // 自定义数字精度 2.123.Gigabytes().Humanize(#.##) // 2.12 GB 2.123.Gigabytes().Humanize(#.#) // 2.1 GB 2.123.Kilobytes().Humanize(#.####)// 2.123 KB // 千分位分组 10000000.Bytes().Humanize(#,##0 KB) // 9,766 KB 10000000.Bytes().Humanize(#,##0.# KB) // 9,765.6 KB // 强制比特/字节符号 12.Bits().Humanize(B) // 1.5 B 0.Bytes().Humanize() // 0 b零值回退到比特符号formatProvider 参数数字与文化单元词的本地化Humanize(input, formatProvider)与Humanize(input, format, formatProvider)两个重载接受IFormatProvider。它不仅影响数字的小数点、千分位等格式化还会通过Configurator.GetFormatter(culture)把单位词本地化ByteSize.cs。测试中的法语示例一目了然2.Terabytes().Humanize(null, new CultureInfo(fr)) // 2 To 2.Gigabytes().Humanize(null, new CultureInfo(fr)) // 2 Go 2.Megabytes().Humanize(null, new CultureInfo(fr)) // 2 Mo 2.Kilobytes().Humanize(null, new CultureInfo(fr)) // 2 Ko 2.Bytes().Humanize(null, new CultureInfo(fr)) // 2 o 2.Bits().Humanize(null, new CultureInfo(fr)) // 2 b比特符号不本地化对应测试见 ByteSizeExtensionsTests.cs。这意味着同一个格式化代码在不同CultureInfo下会自动输出符合当地习惯的单元词无需额外分支。Per(...)从字节量到传输速率Per是唯一返回非字符串类型的方法文档签名如下public static Humanizer.Bytes.ByteRate Per(this Humanizer.Bytes.ByteSize size, System.TimeSpan interval);size字节数量interval产生速率的测量时间间隔。实现只是一行构造ByteSizeExtensions.csnew ByteRate(size, interval)。ByteRate类见 ByteRate.cs封装Size与Interval两个属性并提供自己的Humanize方法public string Humanize(TimeUnit timeUnit TimeUnit.Second); public string Humanize(string? format, TimeUnit timeUnit TimeUnit.Second, CultureInfo? culture null);timeUnit只支持Second、Minute、Hour三档分别输出/s、/min、/h后缀。内部先把字节量折算到目标时间窗再复用ByteSize.Humanize格式化字节部分ByteRate.cs。测试 ByteRateTests.cs 给出了完整的行为矩阵ByteSize.FromBytes(400).Per(TimeSpan.FromSeconds(1)).Humanize() // 400 B/s ByteSize.FromBytes(4 * 1024).Per(TimeSpan.FromSeconds(1)).Humanize() // 4 KB/s ByteSize.FromBytes(4 * 2 * 1024 * 1024).Per(TimeSpan.FromSeconds(2)).Humanize() // 4 MB/s4 MB 分摊到 2 秒后仍按每秒折算 // 指定展示时间单位 ByteSize.FromMegabytes(1).Per(TimeSpan.FromSeconds(60)).Humanize(TimeUnit.Minute) // 1 MB/min ByteSize.FromMegabytes(1).Per(TimeSpan.FromSeconds(3600)).Humanize(TimeUnit.Hour) // 1 MB/h // format 同样作用于字节部分 ByteSize.FromBytes(19854651984).Per(TimeSpan.FromSeconds(1)).Humanize(#.##) // 18.49 GB/sByteRate还实现了IComparableByteRate、IEquatableByteRate按归一化后的每秒字节数BytesPerSecond见 ByteRate.cs比较因此不同时间窗测得的速率可以直接排序或判等。2.14.1 之外的进阶能力当前仓库已包含2.14.1 版 API 文档只收录了上述方法但当前仓库的 ByteSizeExtensions.cs 还扩展了更多能力供升级后使用更大的单位Petabytes(...)、Exabytes(...)、Pebibytes(...)及对应的FromPetabytes、FromExabytes、FromPebibytes工厂方法ByteSize.cs同时ByteSize提供Pebibytes、Gibibytes、Mebibytes、Kibibytes等二进制前缀属性复合格式化HumanizeComposite按降序把大数值拆成多个部分如10242.Bytes().HumanizeComposite()输出10 KB 2 BHumanizeComposite(separator: , , toWords: true)输出10 kilobytes, 2 bytesprecision参数控制最多输出的非零部分数见 ByteSizeExtensionsTests.cs显式单位系统HumanizeWithUnitSystem通过ByteSizeUnitSystem.DecimalSi1000 进制输出kB/MB/GB或ByteSizeUnitSystem.BinaryIec1024 进制输出KiB/MiB/GiB精确控制单位制Legacy保持旧行为ByteRate也提供对应的HumanizeWithUnitSystemToFullWords与Format前者输出完整单词2 gigabytes后者在指定单位系统下做精确格式化ByteSize.cs。这些能力的语义边界哪些 token 允许、何时抛FormatException、何时抛ArgumentOutOfRangeException都在对应方法的 XML 文档注释中有明确说明可在升级到新版后直接查阅。典型应用场景小结结合文档与源码ByteSizeExtensions最实用的几个落地场景是存储/下载大小展示fileLength.Bytes().Humanize()一行得到1.5 MB免去手写单位换算网络带宽统计downloaded.Bytes().Per(TimeSpan.FromSeconds(elapsed)).Humanize()输出2.4 MB/s并可切换TimeUnit.Minute/Hour展示不同口径多语言界面把CultureInfo传入Humanize的formatProvider参数即可自动本地化单位词精确排版利用format参数控制小数位与千分位如#,##0.# KB输出9,765.6 KB。所有方法均为无状态的纯扩展不依赖全局配置即可开箱即用如需更换格式化器如自定义本地化单元词可进一步研究 Configurator.cs 与 DefaultFormatter.cs 的注册机制。赞分享开发工具【免费下载链接】HumanizerHumanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities项目地址https://gitcode.com/gh_mirrors/hu/Humanizer点击查看免费下载相关推荐Humanizer ByteSizeExtensions 完全指南.NET 字节与位单位转换、人性化格式化与速率计算的扩展方法全景Humanizer ByteSizeExtensions 完全指南.NET 字节与位单位转换、人性化格式化与速率计算的扩展方法全景 本篇技术指南围绕 Huma开发工具Humanizer ByteSizeExtensions 完整指南用 C 扩展方法优雅地处理字节、比特与传输速率Humanizer ByteSizeExtensions 完整指南用 C 扩展方法优雅地处理字节、比特与传输速率 本文是 Humanizer 库 ByteSi开发工具Humanizer ByteSizeExtensions 深度解析从数值类型构建并人性化格式化 ByteSizeHumanizer ByteSizeExtensions 深度解析从数值类型构建并人性化格式化 ByteSize 本篇以 Humanizer 2.13.14开发工具上一篇3分钟搞定VideoDownloadHelper视频下载插件终极安装使用指南下一篇中兴光猫配置解密工具轻松破解光猫加密配置的利器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
星链通信卫星选择与多普勒补偿 星链巨型星座中通信卫星选择与多普勒补偿策略
通信卫星选择机制
在星链(Starlink)巨型星座中,地面终端通常会同时看到多颗卫星。为了确保通信质量,需要动态选择最佳通信卫星,并进行相应的多普勒频移补偿。
1. 卫星可… · 2026/9/26 2:49:08
Wren CLI 的 Process 类指南:用 allArguments 与 arguments 读取命令行参数 编程语言语言运行时编译器 【免费下载链接】wren The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language. 项目地址: https://gitcode.com/gh_mirrors/wr/wren 点击查看 免费下载 本篇技术指南聚焦 Wren CLIÿ… · 2026/9/26 2:49:08
Web应用安全实战指南:威胁分析、漏洞防御与应急响应 我从2012年开始做Web开发,亲眼看着Web应用从简单的PHP留言板,长成今天集支付、AI、物联网于一体的复杂系统。说实话,这几年我用过的不少“安全方案”,其实都是靠运气在撑。好几次数不清的线上事故之后我才彻底明白,Web… · 2026/9/26 3:23:34
微信支付安全锁怎么开?避免付款码被盗刷的关键设置 今天想跟你聊一个特别不起眼、但和你每天“用微信收付款”直接相关的安全设置。很多人天天用微信扫码、转账、收红包,却从来没有认真检查过它自带的保障功能,等到手机丢了、被骗子盯上、或者孩子误操作之后,才后悔当初没多看一眼。这个功能就… · 2026/9/26 3:23:34
EPLAN 2024安装配置与卡顿优化全指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:23:28
领夹麦电池选型指南:锂电、镍氢与碱性电池实战对比 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:23:28
DBeaver连接配置导出导入全指南:从.dbp文件到Git工程化管理 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:23:28
sqli-labs Less-25实战:SQL注入OR/AND关键字过滤绕过全解析 在sqli-labs的第25关卡了整晚,最后发现不是不知道原理,而是被最基础的过滤规则给秀了一脸。Less-25这个关卡,说白了就是一套针对SQL注入中OR和AND关键字的过滤机制,很多人在这一关会反复撞墙,不是因为注入手法不够熟练… · 2026/9/26 3:23:28
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46