10 个不稳定版本 (4 个破坏性更新)

0.6.0 2024年1月2日
0.5.0 2023年11月20日
0.4.2 2021年8月28日
0.4.1 2021年2月23日
0.2.1 2019年2月1日

#323 in 开发工具

Download history 22/week @ 2024-04-22 14/week @ 2024-04-29 5/week @ 2024-05-06 12/week @ 2024-05-13 24/week @ 2024-05-20 13/week @ 2024-05-27 23/week @ 2024-06-03 22/week @ 2024-06-10 28/week @ 2024-06-17 21/week @ 2024-06-24 17/week @ 2024-07-01 16/week @ 2024-07-08 14/week @ 2024-07-15 13/week @ 2024-07-22 37/week @ 2024-07-29 19/week @ 2024-08-05

每月 84 次下载

MIT 许可证

32KB
563

hex (hx)

hexdump 的未来派实现。

hx 接受文件路径或 stdin 作为输入,并将十六进制彩色视图输出到 stdout。

hx 使用文件路径作为输入,输出彩色十六进制

$ hx tests/files/alphanumeric.txt
0x000000: 0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6a abcdefghij
0x00000a: 0x6b 0x69 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 kilmnopqrs
0x000014: 0x74 0x75 0x76 0x77 0x78 0x79 0x7a 0x30 0x31 0x32 tuvwxyz012
0x00001e: 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x0a 0x30 0x31 3456789.01
0x000028: 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x30 0x31 2345678901
0x000032: 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x30 0x31 2345678901
0x00003c: 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39           23456789
   bytes: 68

hx 使用 stdin 作为输入,输出彩色十六进制

cat tests/files/alphanumeric.txt | hx
0x000000: 0x61 0x62 0x63 0x64 0x65 0x66 0x67 0x68 0x69 0x6a abcdefghij
0x00000a: 0x6b 0x69 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73 kilmnopqrs
0x000014: 0x74 0x75 0x76 0x77 0x78 0x79 0x7a 0x30 0x31 0x32 tuvwxyz012
0x00001e: 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x0a 0x30 0x31 3456789.01
0x000028: 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x30 0x31 2345678901
0x000032: 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x30 0x31 2345678901
0x00003c: 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39           23456789
   bytes: 68

crates.io build status

示例

低级十六进制格式 -fx

$ hx src/main.rs

lower hex output format

二进制十六进制格式 -fb

$ hx -fb -c4 src/main.rs

binary hex output format

八进制十六进制格式 -fo

$ hx -fo -c8 src/main.rs

octal hex output format

安装

打包可用性

hx 已打包并可在以下平台安装

Packaging status

crates.io 安装

如果已安装 cargo,则只需

cargo install hx

源代码安装

hx 源代码目录中,只需执行

make install

这将运行以下 cargo 命令

cargo build --release
cargo test --verbose --all -- --nocapture
cargo install --path .

这将编译发行版,运行测试并将发行版二进制安装到 <USERDIR>/.cargo/bin/hx

如果 <USERDIR>/.cargo/binPATH 环境变量的部分,则 hx 应该能在 shell 中的任何位置执行。

arch linux 安装

pacman -S hex

debian 安装

浏览 https://github.com/sitkevij/hex/releases/latest 以选择用于本 Debian 安装示例的 VERSION

VERSION=0.6.0 && curl -sLO "https://github.com/sitkevij/hex/releases/download/v$VERSION/hx_$VERSION-1_amd64.deb" && dpkg -i "hx_$VERSION-1_amd64.deb"

guix 安装

guix install hex

在隔离环境中

guix shell --container hex

docker run

# stdin
cat README.md | docker run -ti sitkevij/hx:latest

# file input with parameters and NO_COLOR environment variable
echo "NO_COLOR=1" >docker_env_vars.ignore.txt &&
docker run -ti --env-file docker_env_vars.ignore.txt -v $(pwd)/README.md:/README.md sitkevij/hx:latest -fo -c8 /README.md

功能

rustcgolangpythonfsharpkotlinjavaswift 中输出数组

hx 有一个特性,可以将输入文件的字节数组输出为源代码数组。

例如

Rust 数组:-ar

$ hx -ar -c8 tests/files/tiny.txt
let ARRAY: [u8; 3] = [
    0x69, 0x6c, 0x0a
];

C 数组:-ac

$ hx -ac -c8 tests/files/tiny.txt
unsigned char ARRAY[3] = {
    0x69, 0x6c, 0x0a
};

Go 数组:-ag

$ hx -ag -c8 tests/files/tiny.txt
a := [3]byte{
    0x69, 0x6c, 0x0a,
}

Python 数组:-ap

$ hx -ap -c8 tests/files/tiny.txt
a = [
    0x69, 0x6c, 0x0a
]

Kotlin 数组:-ak

$ hx -ak -c8 tests/files/tiny.txt
val a = byteArrayOf(
    0x69, 0x6c, 0x0a
)

Java 数组:-aj

$ hx -aj -c8 tests/files/tiny.txt
byte[] a = new byte[]{
    0x69, 0x6c, 0x0a
};

Swift 数组:-as

$ hx -as -c8 tests/files/tiny.txt
let a: [UInt8] = [
    0x69, 0x6c, 0x0a
]

F# 数组:-af

$ hx -af -c8 tests/files/tiny.txt
let a = [|
    0x69uy; 0x6cuy; 0x0auy
|]

支持 NO_COLOR

hx 会尊重 NO_COLOR 环境变量。如果已设置,则不会向终端输出颜色。

Rust no_color

帮助

hx
Futuristic take on hexdump, made in Rust.

USAGE:
    hx [OPTIONS] [INPUTFILE]
    <stdout> | hx [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --array <array_format>    Set source code format output: rust (r), C (c), golang (g), python (p), kotlin (k),
                                  java (j), swift (s), fsharp (f) [possible values: r, c, g, p, k, j, s, f]
    -t, --color <color>           Set color tint terminal output. 0 to disable, 1 to enable [possible values: 0, 1]
    -c, --cols <columns>          Set column length
    -f, --format <format>         Set format of octet: Octal (o), LowerHex (x), UpperHex (X), Binary (b) [possible
                                  values: o, x, X, b]
    -u, --func <func_length>      Set function wave length
    -l, --len <len>               Set <len> bytes to read
    -p, --places <func_places>    Set function wave output decimal places

ARGS:
    <INPUTFILE>    Pass file path as an argument, or input data may be passed via stdin

许可证

MIT 协议

依赖项

~1MB
~17K SLoC