首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CRC校验程序

CRC校验程序
EN

Stack Overflow用户
提问于 2013-12-04 13:45:46
回答 1查看 564关注 0票数 2

我在一个警报设备上有一个语音文件,我想更改/重命名。这些文件是VOX格式的ADPCM (NLEN1.bin),我可以大胆地播放它们。并重新记录在凉爽的编辑。成功创建了同样512 to的文件大小,问题是把它们放回报警设备。我需要从语音文件中提供一个带有CRC值的bsc文件。如何获得新录制的语音文件的CRC值?

如果我对原始文件进行CRC检查,我就无法获得bsc文件中给出的值。因为我是逆向工程,所以我想我需要CRC16

BSC档案:

4278904898 NLEN1.bin

4280806306 NLEN2.bin

4280731940 NLEN3.bin

4291163785 NLEN4.bin

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 17:13:52

通过使用艾达Udis86进行一点“观察”,再加上一些Python黑客,我就能够确定.bin.bsc文件中使用的校验和方案。

下面是一个Python代码(来自'ipython'),它展示了如何生成所需的校验和:

代码语言:javascript
复制
In [1]: f=open('NLEN2.bin','r')

In [2]: s=f.read()

In [3]: from arraymodule import *

In [4]: my_int8s=[b for b in array('b',s)]

In [5]: my_int8s[:10]
Out[5]: [2, -103, -110, 0, -128, -128, 0, 10, -125, 10]

In [6]: my_checksum=sum(my_int8s)%(2**32)

In [7]: my_checksum
Out[7]: 4280806306L

注:该程序在每个.bin文件中似乎精确地加了524288字节。

注:如果需要,上面的Python可以变得更快/更小。

编辑

这里是没有ipython行号的“脚本”,希望能在您的Windows平台上工作。

代码语言:javascript
复制
f=open('NLEN2.bin','rb')
s=f.read()
from array import *
my_int8s=[b for b in array('b',s)]
my_checksum=sum(my_int8s)%(2**32)
print("Checksum: %d\n" % my_checksum)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20377020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档