新闻详情

新闻详情

首页 / 资讯中心 / 详情

Humanizer DataUnit 枚举完全指南:.NET 数据大小单位的建模、格式化与本地化

发布时间:2026/9/29 23:14:29来源:尧图网络
Humanizer DataUnit 枚举完全指南:.NET 数据大小单位的建模、格式化与本地化
开发工具【免费下载链接】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点击查看免费下载导读DataUnit是 Humanizer 库中用于描述数据大小data size的单位枚举是字节格式化体系ByteSize、ByteRate与多语言本地化输出之间的核心纽带。本文以 API 参考文档 Humanizer.DataUnit.md 为主体骨架结合当前仓库源码深入讲解该枚举的全部成员、底层换算常量、在ByteSize格式化中的调用链以及它与ByteSizeUnitSystem十进制 SI / 二进制 IEC和本地化 Formatter 的协作关系。读完本文你将清楚理解 Humanizer 如何选单位、如何本地化单位名称以及如何用Format/HumanizeWithUnitSystem等 API 精确控制输出。DataUnit 枚举定义与成员依据 API 文档DataUnit是一个位于Humanizer命名空间下的枚举public enum DataUnit当前仓库中的完整定义位于 src/Humanizer/Localisation/DataUnit.cs。API 文档version-3.0.1列出的基础成员及数值如下成员值说明Bit0比特数据最小单位Byte1字节8 比特Kilobyte2千字节Megabyte3兆字节Gigabyte4吉字节Terabyte5太字节需要说明的是version-3.0.1 的 API 文档只快照了前 6 个成员以当前仓库源码为准DataUnit已经扩展到24 个成员值 023在后文中会逐一展开。前 13 个成员的顺序和值012由测试 ByteSizeUnitSystemTests.cs 通过Enum.GetValuesDataUnit()断言作为二进制兼容性的一部分被固定保留。基础单位Bit、Byte 与 KB~TB前 6 个成员构成了 Humanizer“传统”混合单位体系的主体。它们对应的底层换算常量定义在 ByteSize.cs 中常量值关联的 DataUnitBitsInByte8Bit/ByteBytesInKilobyte1024KilobyteBytesInMegabyte1048576 (1024²)MegabyteBytesInGigabyte1073741824 (1024³)GigabyteBytesInTerabyte1099511627776 (1024⁴)TerabyteBytesInPetabyte1000000000000000 (10¹⁵)PetabyteBytesInExabyte1000000000000000000 (10¹⁸)Exabyte可以推断Humanizer 的传统Legacy体系是“KB~TB 用二进制1024 进制、PB/EB 用十进制1000 进制”的混合模型——这正是ByteSizeUnitSystem.Legacy的语义见 ByteSizeUnitSystem.cs也是测试断言ByteSize.FromBytes(1024).ToString()输出1 KB的原因。每个成员对应的符号与全名常量同样集中在ByteSize中例如BitSymbol b、ByteSymbol B、KilobyteSymbol KB、Kilobyte kilobyte、TerabyteSymbol TB、Terabyte terabyteByteSize.cs。这些常量在ToString的格式化流程中与DataUnit一一对应。扩展成员Petabyte、Exabyte 与 IEC 二进制单位当前源码中的DataUnit在 Terabyte 之后继续扩展成员值说明Petabyte6拍字节传统混合体系中按 10¹⁵ 计Exabyte7艾字节按 10¹⁸ 计Pebibyte8二进制 IEC 拍比字节2⁵⁰Kibibyte9二进制 IEC 千比字节2¹⁰Mebibyte10二进制 IEC 兆比字节2²⁰Gibibyte11二进制 IEC 吉比字节2³⁰Tebibyte12二进制 IEC 太比字节2⁴⁰对应的换算常量在ByteSize中以别名形式存在BytesInKibibyte BytesInKilobyte1024、BytesInMebibyte BytesInMegabyte、BytesInGibibyte BytesInGigabyte、BytesInTebibyte BytesInTerabyte、BytesInPebibyte 1125899906842624ByteSize.cs。符号常量如KibibyteSymbol KiB、PebibyteSymbol PiB以及全名Kibibyte kibibyte等也一并提供。从源码结构看Kibibyte~Tebibyte 这些成员主要服务于“二进制 IEC 单位系统”的显式格式化与解析与BinaryKibibyte~BinaryPebibyte系列值 1923共同支撑ByteSizeUnitSystem.BinaryIec路径。十进制 SI 与二进制 IEC 的显式单位成员为了在显式选择单位系统时避免歧义DataUnit进一步细分出两组“定位精确”的成员DataUnit.cs十进制 SI 组DecimalSi1000 进制成员值对应符号DecimalKilobyte13kB1 000 字节DecimalMegabyte14MB10⁶ 字节DecimalGigabyte15GB10⁹ 字节DecimalTerabyte16TB10¹² 字节DecimalPetabyte17PB10¹⁵ 字节DecimalExabyte18EB10¹⁸ 字节换算常量ByteSize.csBytesInDecimalKilobyte 1000、BytesInDecimalMegabyte 1000000依此类推。二进制 IEC 组BinaryIec1024 进制成员值对应符号BinaryKibibyte19KiB2¹⁰ 字节BinaryMebibyte20MiB2²⁰ 字节BinaryGibibyte21GiB2³⁰ 字节BinaryTebibyte22TiB2⁴⁰ 字节BinaryPebibyte23PiB2⁵⁰ 字节这两组“显式单位”成员被 ByteSizeExtensions.cs 中的DecimalCompositeUnits/BinaryCompositeUnits复合单位表引用用于HumanizeCompositeWithUnitSystem等按系统输出多段组合的格式化场景。DataUnit 在 ByteSize 格式化中的核心调用链DataUnit并非孤立枚举它是ByteSize字符串化的“单位选择 单位命名”枢纽。核心流程如下ByteSize.cs自动选单位LargestWholeNumberValue/GetLargestWholeNumberSymbol/GetLargestWholeNumberFullWord按 Exabyte → Petabyte → … → Byte → Bit 的顺序取“绝对值 ≥ 1”的最大单位。例如FromBytes(1024)时Kilobytes 1因此命中DataUnit.Kilobyte。符号或全词命中单位后调用cultureFormatter.DataUnitHumanize(dataUnit, count, toSymbol)。toSymbol: true输出缩写如KBfalse输出全词如kilobyte。默认输出ToString()使用0.##数字格式拼出类似1.5 KB的字符串ToFullWords()则输出1.5 kilobytesByteSize.cs。显式指定单位Format(ByteSizeUnitSystem, format, provider)与FormatFullWords(...)允许按单位系统明确指定格式串中的单位 token如0 b、0.00 KB由FormatWithUnitSystem完成 token 匹配、数值转换与单位文本替换ByteSize.cs。ByteSizeExtensions还提供了一整套与单位对应的工厂扩展如1024.Bytes()、1.Kilobytes()、FromMebibytes(...)、FromDecimalMegabytes(...)等ByteSizeExtensions.cs它们最终都通过DataUnit关联的换算常量构造ByteSize。本地化DataUnitHumanize 与多语言单位词形DataUnit的另一个关键角色是驱动多语言输出。IFormatter接口定义了核心方法IFormatter.csstring DataUnitHumanize(DataUnit dataUnit, double count, bool toSymbol true);DefaultFormatter的实现DefaultFormatter.cs遵循“短语表优先、英文回退兜底”的策略首先尝试从当前文化的生成短语表Locale 短语表如LocalePhraseTable中查找该DataUnit的本地化词形对于Petabyte、Exabyte、Kibibyte~Tebibyte等非英文文化未生成短语的单位回退到英文形式EnglishFallback.DataUnitHumanize若短语表完全缺失则抛出InvalidOperationException提示“缺少该文化下该单位的生成短语”。在显式单位系统路径中还提供了DataUnitHumanizeExactDefaultFormatter.cs它会结合本地化词形变化复数分类、GrammaticalNumber按精确数量输出正确的词形例如斯洛文尼亚语中3 kilobajti、阿拉伯语中11 ميجابايت。这些跨语言断言可以在 ByteSizeUnitSystemLocaleTests.cs 与 ByteSizeUnitSystemLocaleTheoryData.cs 中查证。与 ByteSizeUnitSystem 的协作关系DataUnit的显式成员Decimal*、Binary*与ByteSizeUnitSystem三值枚举一一呼应ByteSizeUnitSystem.csLegacy0沿用传统混合单位KB~TB 二进制、PB/EB 十进制Format直接委托给ToStringDecimalSi1每级单位相差 1000 倍使用DecimalKilobyte~DecimalExabyteBinaryIec2每级单位相差 1024 倍使用BinaryKibibyte~BinaryPebibyte。在ByteSizeUnitSystem.DecimalSi/BinaryIec下SI/IEC 前缀单位 token 的匹配不区分大小写而b与B仍保持大小写敏感输出时使用规范符号大小写。HumanizeWithUnitSystem、ParseWithUnitSystem、HumanizeCompositeWithUnitSystem等 API 都以此为基准可参考 ByteRate.cs 与 ByteSizeExtensions.cs 的实现以及ByteRate的速率输出示例 Program.cs。总结DataUnit是 Humanizer 数据大小功能中“单位语义”的唯一权威来源它以Bit0、Byte1起步经Kilobyte~Terabyte的传统混合单位扩展到Petabyte、Exabyte与 IEC 的Kibibyte~Tebibyte再到服务于显式单位系统的Decimal*与Binary*系列共 24 个成员。它既驱动ByteSize的自动单位选择与符号输出也通过IFormatter.DataUnitHumanize将单位名称本地化为数十种语言还能配合ByteSizeUnitSystem实现十进制 SI 与二进制 IEC 的精确格式化与解析。理解这张枚举就等于掌握了 Humanizer 数据大小格式化的全部语义底座。赞分享开发工具【免费下载链接】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 DataUnit 枚举完全指南数据大小单位模型与字节格式化体系Humanizer DataUnit 枚举完全指南数据大小单位模型与字节格式化体系 本文基于 website/versioned_docs/version 2开发工具Humanizer DataUnit 枚举详解数据单位如何驱动字节大小格式化与本地化Humanizer DataUnit 枚举详解数据单位如何驱动字节大小格式化与本地化 Humanizer.DataUnit 源码位于 src/Humaniz开发工具Humanizer 数据单位枚举 DataUnit 详解从 Bit 到 Exabyte 的单位体系与数据大小本地化格式化Humanizer 数据单位枚举 DataUnit 详解从 Bit 到 Exabyte 的单位体系与数据大小本地化格式化 导读 Humanizer.Local开发工具上一篇Bounded Context Canvas核心组件详解战略分类、领域角色与通信模式下一篇ExusData与Git LFS高效管理大型机器人数据集的终极指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

等保2.0拓扑图绘制规范与实战案例 2026/9/29 23:14:23

等保2.0拓扑图绘制规范与实战案例

简介:本资源是一份面向网络安全工程师、等保测评人员及高校信息安全专业师生的等级保护2.0实战型拓扑设计参考材料,聚焦政务、医疗、教育、企业等多行业三级/二级系统合规建设需求。119页PPT系统梳理了等保2.0“分区域、分层级、全要素”架构设计逻辑&am…

阅读更多 →
GPU 运维(AI Infra / 算力运维)能力图谱与学习路线 · 面向 2027 求职 2026/9/29 23:14:10

GPU 运维(AI Infra / 算力运维)能力图谱与学习路线 · 面向 2027 求职

文章目录 GPU 运维(AI Infra / 算力运维)能力图谱与学习路线 面向 2027 求职 一、先看清岗位:三档分层,别一锅端 二、七层技能栈逐层拆解 L7 硬件与机房基础设施 L6 驱动与 CUDA 软件栈(最容易翻车的一层) L5 容器与资源隔离 L4 训练与推理服务运维(2027 年最吃香的一层…

阅读更多 →
Nginx 与 Traefik 多服务路由:TaoToken 统一 Key 接入配置骨架 2026/9/29 23:14:10

Nginx 与 Traefik 多服务路由:TaoToken 统一 Key 接入配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战(TaoToken配置篇) 2026/9/29 23:14:10

OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战(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/29 23:14:10

机房平面布置图绘制复盘:从编号混乱到可视化台账

一、任务与问题任务是交付一套机房平面布置图:PPT 版示意图 CAD 版图纸。动手之后才发现,难的不是画图,是编号。运营商机房里的机柜、网络设备、ODF、光分,长期存在多套编号并行:编号类型来源特点物理标签编号现场纸质…

阅读更多 →
Windows 时间同步服务器设置:W32Time与NTP配置指南 2026/9/29 23:14:10

Windows 时间同步服务器设置:W32Time与NTP配置指南

凌晨两点被电话叫起来,说一批业务服务器登录报"时钟偏差过大",连域控自己都进不去。远程连上一看,主域控比标准时间慢了七分多钟,Kerberos 票据直接失效,整个域的认证链断掉。当时第一反应是有人动过时间服务…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉