| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2483 人关注过本帖
标题:求助帖,vfp6.0文本文件字符统计写入信息表之后怎么进行二进制哈夫曼编码
只看楼主 加入收藏
Analysisss
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-19
收藏
得分:0 
回复 10楼 aaaaaa
您能先把程序给我看一下么,因为现在我只做到字符统计的这一个部分就卡壳了,然后用c是用指针,因为我之前对数据库不太了解,老师告诉我们说用vfp加密比c简单多了,结果现在是没有任何思路,感觉自己都插不了手
2016-05-21 11:39
Analysisss
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-19
收藏
得分:0 
回复 10楼 aaaaaa
如果用码长*概率那种算计手动计算信源熵的话,我的例子应该是0.25*2+0.75*3=2.75,这个我不太懂,这么算应该是用霍夫曼编码得的平均比特率吧
2016-05-21 12:04
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
霍夫曼编码是用来压缩,不是加密,当然从广义上来说,压缩也可以是起到加密的作用,压缩的技术很成熟了,不一定非得自己写压缩代码;

字符统计确实是 VFP 的强项,几乎可以用一条 SQL 语句就可以汇总出所有值,速度也飞快,但使用霍夫曼编码就不是 VFP 的强项,二叉树的数据结构不是关系型的二维结构,在 VFP 里一般用到数组处理,哪怕使用 ASort() / AScan() 这些快速的函数,其速度也是不理想的,比如 10K 的文件,用 VFP 做霍夫曼编码,约 2秒,用 VB 约 0.05秒,用 C 语言应该更快;

既然你的擅长是 C 语言,而且霍夫曼编码的 C 示例网上一大把,为什么你要取短补长呢?

我的代码你不能用的,我使用了 CTOBIN( ) / BINTOC( ) 的函数,VFP 6.0 不支持的;

我喜欢讨论技术,以前有人发帖需要代码,我上传了,帖主拿了就跑,谢声都没有,估计是作业帮,如果你真的喜欢算法,我们先预热和交互一下,然后我们进一步,怎样?代码不值钱的,思想才是精髓。

说说看,你为什么要使用霍夫曼编码/解码?

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-21 14:55
Analysisss
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-19
收藏
得分:0 
回复 13楼 aaaaaa
首先,为什么要用霍夫曼编码进行加密解密,确实是目前设计用到了,对,霍夫曼编码确实只能起到压缩的作用,因为译码是公开的,编码之后任何人都能破解,但是老师给的建议是,在编码完成之后可以分组调换一下数字的位置,然后自己解码的时候加个函数,就算起到加密的效果了。至于为什么一定要用vfp,是现在实现这个完整功能是在VFP表单上建立的,我不知道vfp和c怎么可以互相调用,咨询老师之后,他说在VFP上更加方便。
然后,您能跟我讨论当然是好事情,可能也算不上讨论,因为不瞒您说我编程很弱,可能直接拿到代码也看不太懂整体的思路和流程是怎么样的,但是可能我算不上对算法有兴趣,确实是现在用到这点了才来求助的。
我的情况大体是这么个情况,您愿意帮我肯定感激不尽,要是您觉得,我可能做不到跟您交流的层次,也没关系,再次感谢昨天的辛苦。
2016-05-21 15:47
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
霍夫曼编码(压缩)和解码(解压) VFP 示例

先运行 Demo1.Prg,该文件是生成样本测试文件,样本来自于:http://baike.baidu.com/link?url=quvvs_MhkS6Mgb1d-5cBNP-VPnQXOVWzGOxTrKmZFnmciYX-9CQ3K5Hg3I73B7NIdfyUSVAbRam7owgTf8au5a

然后运行 Demo.Prg,该文件是霍夫曼编码(压缩)和解码(解压) VFP 示例,有中文说明。

Huffman.prg 是霍夫曼类库/过程文件。

试试看。

Huffman.rar (17.05 KB)

.

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-21 23:54
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
其实对 C 语言熟悉的,可以抛弃 VFP 的算法/代码,因为二叉树的算法 C 语言有优势,而且霍夫曼的 C 语言算法/示例/源代码网上一大把,包含了频率等统计。
VFP 只对关系型二维表的统计有优势,文字处理不是 VFP 的擅长。

用递归可以语言简单和优美,但速度不理想,考虑到优化,所以只用了循环语句,因此程序长了点。

源代码来自于:http://tcharles.

试试看。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-22 00:06
Analysisss
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-19
收藏
得分:0 
回复 16楼 aaaaaa
好的,我先试试看,有问题再跟您交流,感谢!
2016-05-22 19:52
Analysisss
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-19
收藏
得分:0 
回复 16楼 aaaaaa
VFP可以直接调用别的平台的程序么,我在百度上找了一下有个RUN,直接写明程序位置就可以运行,只是我还是不太明白怎么把两个结合起来
2016-05-22 19:54
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:20 
VFP 可以直接运行 Exe 文件,方法很多的:
1. Run - VFP 内置命令
2. DECLARE INTEGER WinExec IN win32api STRING command, INTEGER param - API 方式
3. Declare Integer ShellExecute in Shell32.dll ;
   Long nhWnd, String cAction, String cFile, ;
   String cParam, String cDirectory, Integer nShow
   -  ShellExecute 方式
4.  CreateObject("wscript.shell") - Windows 脚本
5. Cmd.exe /C or /C - COMSPEC 方式
6. WMI - Windows 管理规范

好像还有,记得应该有 10+ 种方式调用 EXE 文件,如果是 Dll 的,大部分的 VFP 都可以调用。

不太明白,为什么一个简单的霍夫曼编码要 VFP 与 C 互相调用?

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-05-22 20:35
Analysisss
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-19
收藏
得分:0 
回复 19楼 aaaaaa
恩,因为整个架子是搭在一个vfp表单上的,不是只进行霍夫曼编码这个程序就行了,涉及到面向用户的一些问题
2016-05-22 20:42
快速回复:求助帖,vfp6.0文本文件字符统计写入信息表之后怎么进行二进制哈夫曼编 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021010 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved