"""合成块差异教学：不是完整显示时序，不可写入设备。"""
from hashlib import sha256

def block(width):
    data = bytearray(128)
    data[:8] = bytes.fromhex("00 ff ff ff ff ff ff 00")
    data[8:10] = bytes.fromhex("04 43")
    data[18:20] = bytes([1, 4])
    data[21:23] = bytes([width, 30])
    data[127] = (-sum(data[:127])) & 255
    return bytes(data)

before, after = block(52), block(60)
assert len(before) == len(after) == 128
assert sum(before) % 256 == sum(after) % 256 == 0
diffs = [(i, a, b) for i, (a, b) in enumerate(zip(before, after)) if a != b]
assert [r[0] for r in diffs] == [21, 127]
for i, a, b in diffs:
    print(f"offset={i} before={a:02x} after={b:02x}")
print("before_sha256", sha256(before).hexdigest())
print("after_sha256", sha256(after).hexdigest())
