计算编码(用整数替换小数快速计算方法)
博客专区 > lu62 的博客 > 博客详情
计算编码(用整数替换小数快速计算方法)
lu62 发表于5个月前
计算编码(用整数替换小数快速计算方法)
  • 发表于 5个月前
  • 阅读 3
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

多谢    http://blog.sina.com.cn/hathuang" 小石的博客 启发,苦钻几天转换方法才破解。

1.创建字节概率表,记录字节所在区间(of开始位置,hf结束位);

2.遍历全部数组,每次左移直到(of-hf>总数)影射区(每次取of加在影射区)同步左移,

of<<=1,hf<<=1,如果概率大   of-hf大移动很小位 就使子区间大于总数,也就是小的位数可以表达信息的熵概念。 
3.保在全部溢出的(在影射区中的位的信息of)以及剩下数位。

  如有sasdaadhn在概率表

开始位置   后靣开始---本结束位置 概率(出现数)///需要移动
s/0-00000000 2-00000010-00000000 2///3
a/2-00000010 5-00000101-00000010 3///2
d/5-00000101 6-00000111-00000101 2///3
h/7-00000111 7-00001000-00001001 1///3
n/7-00001000 8-00001000-00010001

 

1///4
     
     

 

of-hf>总数 结束后影射区同步左移  
0000000000000000000000000000000移3位+s开始(00000000)也为0 s+00000000
0000000000000000000000000001000加a开始位2(00001000) a+00001000
0000000000000000000000001000000加s移3位加(00000000) s+000000000
0000000000000000000001000101000加d移动3位(00101000) 00000101
0000000000000000000100010101000加a移2位(00001000) 00000010
0000000000000000010001010101000加a2位(00001000) 00000010
0000000000000010001010101101000加d移2位(00101000) 00000101
0000000000010001010101101111000加h移3位(00111000) 00000111
0000000100010101011011111000000加n移4位(10000000) 00001000

  上表最后1行即是压宿数据。解 码过程用前数同样同步左移直到hf-of>总数,影射数据-of剩下即是下1个字节位置,取该位置hf-of移位直到在于总数,用影射区数-of得下一个开始位数,直到结束,因为压宿数据中重叠成分,左移后减去了 前一个of同步左移即是该字节在概率表位置,也是压宿后数组保在第一字节数可得对应of和hf。同样保存概率表信息


更详细代码   html://lue62.cn:8080/index.html  

共有 人打赏支持
粉丝 0
博文 1
码字总数 479
×
lu62
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: