
原站提供的展示图片。
bcal(Byte CALculator)面向经常处理位、字节、地址和二进制前缀的用户。它以终端交互方式工作,也能直接计算命令行参数、读取管道输入或进行文件重定向,适合存储容量计算、底层地址换算和整数表达式处理。
用途与适用场景
bcal 主要用于存储相关计算和通用数值运算。它可以计算带有 B、KiB、MiB、GiB、TiB 以及 kB、MB、GB、TB 等单位的表达式,并在 SI 与 IEC 存储单位之间进行换算。对于需要查看二进制、十进制或十六进制表示,分析整数的位位置,或在磁盘参数之间转换的场景,也可以使用相应功能。
在存储容量、扇区地址、磁盘几何参数或底层数据处理中,bcal 能将字节地址表示为 LBA 与偏移,也能在 LBA 和 CHS 之间转换。它还适用于需要加减乘除、取模、移位、按位与或、按位或、异或及取补等操作的终端工作流。
准备与上手方式
bcal 使用 C 编写,依赖标准 libc 和 GNU Readline,或可选用 BSD Editline。构建时也可以排除 Readline,使用自带的输入提示和历史文件支持;静态构建会强制采用这种方式。项目提供包管理器安装和源码构建方式,源码构建支持通过 PREFIX 指定不同安装位置。
不带参数运行时会进入 REPL 交互模式。这里可以进行存储单位换算、表达式计算和进制相关操作,最近一次有效结果会保存为变量 r,便于后续表达式继续使用。也可以直接把表达式作为参数执行;此时表达式需要加引号,表达式中的空格会被忽略。输入可以来自管道或文件重定向。
命令行还支持直接传入容量和单位,例如单位默认按字节处理,单位名称不区分大小写。通用计算模式可通过 -b 启动,也可以在交互过程中切换;提示符会根据当前模式显示为 bytes> 或 maths>。
主要计算功能
存储表达式支持加法、减法、乘法、除法和取模,也支持按位与、按位或、异或、取补、左移和右移。通用计算模式还提供 exp、log、ln、pow、root 和 sum 等函数,浮点运算使用 long double。整数输入可使用十进制、以 0x 开头的十六进制,部分操作也识别以 0b 开头的二进制表示。
bcal 能把容量转换为不同的 SI 或 IEC 单位,并显示字节地址;通过选项可以查看 LBA 与偏移。它支持二进制、十进制和十六进制之间的转换,也能显示一个整数的各个位位置及对应位值。输出可以设置为简略形式,整数数学结果也可以要求以十六进制显示。
LBA 与 CHS 转换支持自定义扇区大小、每柱面最大磁头数和每磁道最大扇区数。默认扇区大小为 512,每柱面最大磁头数为 16,每磁道最大扇区数为 63。转换参数使用连字符分隔,未指定的数值按零处理。
使用边界与注意事项
bcal 只支持 64 位操作系统。数值转换在具备 __uint128_t 时可使用 128 位精度,否则为 64 位;浮点运算使用 long double。存储表达式不支持负值,存储单位中也不支持 bit 作为单位。
字节不能出现小数,因为字节不可被分割寻址;当计算结果不是整数个字节时,bcal 会显示向下取整后的字节值。输入容量时可以使用十进制或十六进制数值,但二进制表示主要用于其他操作。
交互历史文件保存在 XDG_CONFIG_HOME/bcal/history;如果 XDG_CONFIG_HOME 未设置,则使用 HOME/.config/bcal/history。位值输出的颜色可以通过 BCAL_BIT_ANSI_COLOR_CODE 自定义,也可以设为空以关闭颜色。
bcal 是否支持把 bit 作为容量单位?
不支持。容量单位包括 B、KiB、MiB、GiB、TiB、kB、MB、GB 和 TB,默认单位为 B,也就是字节。
非整数个字节的计算结果会怎样处理?
bcal 会显示向下取整后的字节值,因为实际地址不能表示小数个字节。