Skip to content

chunks 函数详解 ​

🧩 myhexdump.py 的分块辅助:把字节按 16 字节切分。

📎 源码在线查看:myhexdump.py#L159-L178(chunks)

做什么 ​

chunks(seq, n) 把序列按每 n 个一组切分,生成可迭代的块。myhexdump 用它每 16 字节一行。

实现 ​

python
def chunks(seq, size):
    return (seq[i:i+size] for i in range(0, len(seq), size))

生成器,惰性,省内存。

用例 ​

python
>>> list(chunks(b"abcdef", 2))
[b'ab', b'cd', b'ef']

>>> for c in chunks(data, 16):
...     print(c)

在 myhexdump 里的角色 ​

python
for chunk in chunks(bytes, 16):
    hex_part = " ".join(f"{b:02x}" for b in chunk)
    # ...

每 16 字节一行 hexdump,靠 chunks 切分。

边界 ​

最后一组可能不足 16 字节,chunks 仍返回剩余部分,myhexdump 的 hex_part 用 :<48 左对齐补空格保持对齐。

相关文档 ​

基于 VitePress 构建 · 教学用途