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, 二进制数据, 十六进制, 十六进制编码器, 字符串处理, 字节处理, 字节序, 开发工具库, 开源库, 搜索引擎爬虫, 数据序列化, 数据格式化, 数据转换, 整数打包, 无后门, 端序转换, 编解码库, 补码, 软件开发, 进制转换, 逆向工具, 零依赖