接到个任务,需要批量处理10万个HDCP key的二进制文件,需要把前320个字节的十六进制的和相加,并且用65536减去和,然后将所得结果写到二进制文件特定的位置(具体是0x140h和0x141h),高位在前,低位在后
如下图1红色部分所示。
图1
得到需求后,我在思考用什么方式来实现批量处理,感觉linux里面的shell正非常适合处理这种批量数据。由于需要累加这些二进制文件里面的数据
不太好直接处理,我就先把他们从二进制转化为ASCII的文本形式,然后把数据转化为十进制方便一些(要不然直接类似于FF+10这种会出问题,用awk
把这些数据切割好,然后累加
#change to ASCII Txt
od -An -v -tx1 $filename > $file_txt
awk 'BEGIN{FS=" ";total = "0x"} {if(NR<=20){for(i =1;i<17;i++){c = (to