#conversion #converter #convert #math

应用 numconverter

简单的 CLI 数字转换器

1 个稳定版本

1.1.0 2019 年 10 月 25 日

#2289命令行实用程序

MIT/Apache

24KB
330

TekMonogram

数字转换器

Tektronix CodeFactor Build Status

Rust 编写的简单基数转换项目。

安装

克隆仓库并运行 cargo build --release。可执行文件 numconverter 将位于 target/release 目录中。从那里运行,或将文件移动/创建符号链接到您的 PATH 目录(例如 ~/bin/)。

我为基于输入基的名称设置为 ncon 和衍生物

alias ncon="numconverter"
alias bcon="numconverter --from-base 2"
alias ocon="numconverter --from-base 8"
alias hcon="numconverter --from-base 16"

依赖项

使用 Rust 构建。(Rust 安装说明)

  • 使用 structopt 包处理命令行输入。
  • 使用 clipboard 包处理剪贴板读写。[对于 Linux:x11_clipboardnix 包]

Linux

剪贴板功能所需的依赖项包括

  • libxcb-shape0-dev
  • libxcb-xfixes0-dev

使用以下命令安装

sudo apt-get install libxcb-shape0-dev libxcb-xfixes0-dev

用法

以下提供了一些基本用法示例

显示示例

基本十进制转换

$ numconverter 255
Base 02: 1111_1111
Base 08: 377
Base 10: 255
Base 16: FF

指定二进制输入

$ numconverter b 1001
Base 02: 1001
Base 08: 11
Base 10: 9
Base 16: 9

指定十六进制输入

$ numconverter h ab12
Base 02: 1010_1011_0001_0010
Base 08: 12_5422
Base 10: 4_3794
Base 16: AB12

指定输出基数 - 二进制(基数 2)到十六进制(基数 16)

$ numconverter b 1010 16
Base 16: A

指定输出基数(非标准)

$ numconverter 1234567890 3 5 12 22 32
Base 03: 1001_2001_0011_1220_2200
Base 05: 10_0120_2213_3030
Base 12: 2_A555_5016
Base 22: AJC_3E26
Base 32: 14P_C0MI

输入 numconverter --help 查看可用选项。

numconverter [base_char] [from_num] [to_base]... [FLAGS]... [OPTIONS]...

ARGS:
    base_char   (b, o, d, h - binary, octal, decimal, hex) Character
                representing the 'from' base.  If both the base_char and
                the -f/--from-base are provided, base_char will be used.
    from_num    The input number to convert.  Default base 10.
    to_base     A list of base 10 numbers to convert from_num to.  Base
                must be between 2 and 32 inclusive.

FLAGS:
    -b, --bare              Disable Pretty Print
    -c, --copy              Copy the resulting ouput to clipboard
        --from-clipboard    Get the input number from clipboard
    -h, --help              Prints help information
        --no-sep            Do not pad the output
    -s, --silent            Do not print output, for use with the clipboard on.
    -V, --version           Prints version information
    -v, --verbosity         Verbosity (more v's, more verbose)


OPTIONS:
    -f, --from-base <from-base>      Base of the input number [default: 10]
    -p, --pad <pad>                  Pad the output with leading 0s [default: 0]
        --sep-char <sep-char>        Specify spacer char [default: _]
    -l, --sep-length <sep-length>    Put a spacer every N characters [default: 4]

贡献

在提交 PR 之前,请确保您已

  • 运行 cargo test
    • 这会运行所有定义的测试。当可能时,请确保为您的 PR 添加测试覆盖率!😁
  • 检查编译时没有警告。
    • cargo clean && cargo build 确保所有内容都是最新编译的,并将为您提供对警告的最大可见性。
    • TravisCI 将使用 cargo build --features=fail-on-warnings 运行,因此请检查以避免等待长时间的 CI 构建。
  • 运行 cargo fmt 并提交结果。
    • 在自动格式化时,一些结果(在我看来)并不理想,但常见的格式比不一致的格式要好(也是我的看法)。默认格式是为了与 Rust 社区的其他部分保持一致而做出的安全决策。如果你发现某个格式化决策难以接受,请提交一个 Issue 并开始讨论(请保持礼貌,参见行为准则 😉)。

许可证

许可协议为以下之一

根据您的选择。

贡献

除非您明确表示,否则根据 Apache-2.0 许可证定义的,您有意提交的、用于包含在本作品中的任何贡献都将按上述方式双许可,不附加任何额外的条款或条件。

贡献者许可协议

向本项目贡献必须附有贡献者许可协议。您(或您的雇主)保留您贡献的版权;这仅仅是我们使用和重新分发您贡献作为本项目一部分的许可。

维护者

Zach Nielsen - @ZNielsen

依赖项

~2.4–3.5MB
~63K SLoC