Skip to content

Commit 09ba792

Browse files
committed
添加 checksum 实现
1 parent 0d7f18e commit 09ba792

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/sfnttools/internal/checksum.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from typing import Final
2+
3+
CHECKSUM_MASK: Final = 0xFFFFFFFF
4+
5+
6+
def calculate_checksum(data: bytes) -> int:
7+
checksum = 0
8+
for i in range(0, len(data), 4):
9+
chunk = data[i:i + 4]
10+
if len(chunk) < 4:
11+
chunk += b'\x00' * (4 - len(chunk))
12+
checksum += int.from_bytes(chunk, 'big', signed=False)
13+
checksum &= CHECKSUM_MASK
14+
return checksum

tests/test_checksum.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from sfnttools.internal.checksum import calculate_checksum
2+
3+
4+
def test_calculate_checksum():
5+
assert calculate_checksum(b'abcd') == 1633837924
6+
assert calculate_checksum(b'abcdxyz') == 3655064932

0 commit comments

Comments
 (0)