扩展库 / units

units

字节、时长与计数的人类可读格式。

1024 进制使用 KiB/MiB,1000 进制使用 kB/MB;解析失败抛错,合法负数不再与错误混淆。

2026-10-26 重建 Windows/Linux 发布物后,两平台默认包级门禁通过;先前 VFS 缺头和带文本 AOT 缺符号只属于旧发布物。本包签收限当前两平台 x64 范围,不代表全产品或其他架构发布准入。

2026-10-28 进一步移除五条格式化返回链中接管后的正文副本。C/XLang 对照分配预算和完整 cgen 检查先红后绿;Windows/Linux 默认门禁、Linux ASan/UBSan、线程和双语 JIT/AOT 通过。必要的结果分配、长度扫描及错误作用域仍存在,不宣称完整调用零开销。

API

函数用途
bytes / bytesDecimal / parseBytes格式化和解析 IEC/SI 字节单位
duration / durationShort / parseDuration秒数与时长文本
count / isPow2计数缩写与整数判断

xlang

import units
println(units.bytes(1536.0))         // 1.50 KiB
println(units.bytes(1048575.0))      // 1.00 MiB
println(units.bytesDecimal(1500.0))  // 1.50 kB
println(units.parseDuration("1h30m"))

显示值会舍入,不应当成精确存储格式;舍入到下一单位时自动升档,整数舍入为零时写作 0 而非 -0。升档依据 XRT 最终小数文本,即使线程切换 CRT 舍入模式也不会输出已满额的低一级单位。字节和计数固定使用点号小数,不受进程区域设置影响,parseBytes 也只接受点号。C isPow2 输入使用与 XLang int 一致的 int64_t,结果为 C int。C 入口成功调用会清除前次失败的线程错误;边界测试和 AOT 状态见包内 README。

Windows 默认包级门禁覆盖严格 GCC、C ABI/边界/四线程、XLang 边界与分配故障、双语同输出,以及核心、XLang 范例和 C 单文件范例独立 EXE AOT;Linux 另以 ASan/UBSan 验证 C 边界与并发,并执行相同的双语 AOT 输出对照。长时长格式另以 C 4096 组、XLang 200 组整数秒往返检查;短格式仅用于显示。五条格式化入口的分配失败在 C 保留内存错误、在 XLang 抛 MemoryError,故障清除后可以继续使用。验证命令见包内 README;未验收长时负载及其他架构。