欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

答复

答复

心情比较差,论文看不进
昨天看了下代码,这儿做个总结
Decode主要就是uiAny为读入数据,
prob作为调整数据,每次都在1024左右
然后按照u, uiSom解码,如果uiAny落在[0-u)之间,解码0,如果uiAny落在[u-uiSom]之间,就解码为1
对uiSom,prob,u做调整,
调整在一个8位字节中,大概主要是对0xffffffff-0x0之间,当然,具体有小变化,由prob调整,每次u大概为uiSom的一半左右,看前次输出的值为0还是为1,调整prob,如果输出为0,每次prob 变大一点,不到(1/32),否则,每次prob 变小,减少1/32,
调整大概就是对0xffffffff-0x0之间
0xffffffff/2,输出1,小于,输出0,------------------第一位
0xffffffff/2,0xffffffff/4 输出1,小于,输出0,-----第二位
0xffffffff/4,0xffffffff/8 输出1,小于,输出0,-----第三位
。。。。。。。。。。
注意上面不是一定的,是大概情况而以
以上所说的就是解码这一块
我想了下,如果要编码的话,应该要构造出符合上述条件的uiAny,但是从解码过程可以看到,
每次解码大概8位以后,是需要读入下一个字节的,然后uiAny左移8位,而每次比较的时候是uiAny,每次为输出为1时需要减的也是uiAny,所以uiAny是后向相关的,也就是说,每次对uiAny减了一次后,对后面的解码有影响。
所以在编码的时候如何考虑这个后向影响呢?
首先,编码的时候,我想到的结构和解码一样,
u,uiSom,prob都没有变化
u=......
if(symble ==0)
{
}else
{
}
不过对Low做变化的时候需要ShiftLow,感觉要在这块处理后向相关,应该是每次逆置,
------------此处没有搞通----------达人不要谦虚阿,多放上来:))
FlushData是要对Low中残余的数据输出........:)

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功