如何使用Python从十六进制字节生成校验和
我正在用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))