nripankadas07/hexstr

GitHub: nripankadas07/hexstr

零依赖的 Python 库,提供对前缀、宽度、符号模式和字节序的精确控制,将整数和字节序列与十六进制字符串进行双向转换。

Stars: 0 | Forks: 0

# hexstr 零依赖的 Python 库,用于将整数和字节序列打包及解包为十六进制字符串,并提供对前缀、宽度、大小写、符号模式和字节序的精确控制。 ## 安装 ``` pip install hexstr ``` 需要 Python 3.8 或更高版本。无运行时依赖。 ## 为什么需要它? Python 的标准库包含 `hex()`、`int(s, 16)` 和 `bytes.hex()`,但它们组合使用起来并不方便: - `hex(255)` 返回带有固定前缀且无法替换的 `"0xff"`。 - `hex(-255)` 返回 `"-0xff"`,而不是二进制补码编码。 - 没有内置的方法可以在带有自定义前缀的情况下填充到固定宽度,也没有方法生成小端序的十六进制数,或者将 `"DE:AD:BE:EF"` 解码回字节。 `hexstr` 通过一个小巧的 API 处理了所有这些问题。 ## 用法 ``` from hexstr import encode, decode, encode_bytes, decode_bytes encode(255) encode(255, prefix="0x") encode(0xAB, width=4, prefix="0x") encode(-255, prefix="0x") encode(-1, width=8, sign="twos-complement") decode("ffffffff", width=8, sign="twos-complement") encode_bytes(b"\xde\xad\xbe\xef") encode_bytes(b"\xde\xad\xbe\xef", sep=":", groupsize=2) decode_bytes("DE:AD:BE:EF") decode_bytes("0x de ad be ef") ``` 在解码时接受以下前缀:`0x`、`0X`、`#`、`$`、`\x`、`\X`。 ## API ### `encode(value, *, width=None, prefix="", uppercase=False, sign="default", byteorder="big")` 将整数编码为十六进制字符串。 ### `decode(text, *, sign="default", width=None, byteorder="big")` 将十六进制字符串解码为整数。 ### `encode_bytes(data, *, uppercase=False, sep="", groupsize=None)` 将字节类对象编码为十六进制;同时传递 `sep` 和 `groupsize` 以插入分隔符。 ### `decode_bytes(text)` 容错空格以及 `:`、`_`、`-` 分隔符。 ### `HexStrError` `ValueError` 的子类。 ## 测试 ``` pip install -e ".[dev]" pytest ``` ## 许可证 MIT © 2026 Nripanka Das
标签:MIT许可, Python, 二进制数据, 十六进制, 十六进制编码器, 字符串处理, 字节处理, 字节序, 开发工具库, 开源库, 搜索引擎爬虫, 数据序列化, 数据格式化, 数据转换, 整数打包, 无后门, 端序转换, 编解码库, 补码, 软件开发, 进制转换, 逆向工具, 零依赖