如何使用Python从十六进制字节生成校验和

0 投票
1 回答
7607 浏览
提问于 2025-04-16 22:45

我正在用Python创建一个十六进制文件,最后需要加一个校验和,这个校验和是所有十六进制值的总和。具体来说,就是校验和等于从0x000000到0x27DAFF的所有字节的和(不包括这4个字节)。这个校验和要写到缓冲区的0x27DB00到0x27DB03的位置,格式是无符号长整型。

有没有什么好主意可以快速完成这个任务?我现在用的是Python 2.7。

为了让你了解我在做什么,我是先用ctypes创建一个缓冲区,然后往这个缓冲区写很多十六进制的数据,接着从缓冲区创建一个cStringIO对象,并把这个字符串对象写入一个file_obj,这个对象是一个Django的HTTP响应(也就是说,它会把十六进制文件作为可下载的文件返回)。所以,任何关于缓冲区的聪明做法都非常受欢迎。

1 个回答

4

以下两个解决方案都有效:

checksum = sum(map(ord, b))

或者:

checksum = sum(bytearray(b))

撰写回答