php实现基于文本的莫斯电码生成器

php实现基于文本的莫斯电码生成器

ID:9292921

大小:328.50 KB

页数:8页

时间:2018-04-26

php实现基于文本的莫斯电码生成器_第1页
php实现基于文本的莫斯电码生成器_第2页
php实现基于文本的莫斯电码生成器_第3页
php实现基于文本的莫斯电码生成器_第4页
php实现基于文本的莫斯电码生成器_第5页
资源描述:

《php实现基于文本的莫斯电码生成器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PHP实现基于文本的莫斯电码生成器http://www.yunyoubar.com/邮件群发 介绍我最近遇到一个基于输入文本生成摩斯代码音频文件的需求。几番搜索无果之后,我决定自己编写一个生成器。下载源代码–2.63KB因为我希望通过web的方式访问我的摩斯代码音频文件,所以我决定采用PHP作为我主要的编程语言。上面的截图显示了一个开始生成莫斯代码的网页。在下载的zip文件中,包含了用于提交文本的网页以及用于生成和展现音频文件的PHP源文件。如果你想测试PHP代码,你需要将网页和相关的PHP文件复制到启用了PHP的服务器上。对于许多人来说,莫斯代码就像一些老

2、电影中表现的那样,就是一些“点”和“横线”的序列,或者一连串的哔哔声。显然,如果你想用计算机代码来生成莫斯代码,这样的了解是远远不够的。这篇文章将会介绍生成莫斯代码的要素,如何生成WAVE格式的音频文件,以及如何用PHP将莫斯代码转化成音频文件。莫斯代码莫斯代码是一种文本编码方式。它的优点是编码方便,而且用人耳就能够方便的解码。本质上,是通过音频(或者无线电频)的开和关,从而形成或短或长的音频脉冲,一般称作点(dot)和线(dash),或者用无线电术语称作“嘀”和“嗒”。用现代数字通信术语,莫斯代码是一种振幅键控(amplitudeshiftkeying,A

3、SK)。在莫斯代码中,字符(字母,数字,标点符号和特殊符号)被编码成一个“嘀”和“嗒”的序列。所以为了把文本转化成莫斯代码,我们首先要确定如何来表示“嘀”和“嗒”。一个很显然的选择就是,用0表示“嘀”,用1表示“嗒”,或者反过来。不幸的是,莫斯代码采用的是可变长编码方案。所以我们也必须要使用一种可变长序列,或者采取一种方式,把数据打包成一种计算机内存通用的固定位宽(fixedbit-size)的格式。另外,需要特别注意的是,莫斯代码并不区分字母大小写,而且对一些特殊符号无法编码。在我们这个实现中,未定义的字符和符号将会被忽略。在这个项目中,内存占用并不是一个

4、需要特别考虑的问题。所以,我们提出一个简单的编码方案,即用“0”来表示每个“嘀”,用“1”来表示每个“嗒”,并且把他们放在一个字符串关联数组中。定义莫斯代码编码表的PHP代码就像下面这样:1.$CWCODE = array ('A'=>'01','B'=>'1000','C'=>'1010','D'=>'100','E'=>'0', 2.     'F'=>'0010','G'=>'110','H'=>'0000','I'=>'00','J'=>'0111', 3.     'K'=>'101','L'=>'0100','M'=>'11','N'=>'10'

5、, 'O'=>'111', 4.     'P'=>'0110','Q'=>'1101','R'=>'010','S'=>'000','T'=>'1', 5.     'U'=>'001','V'=>'0001','W'=>'011','X'=>'1001','Y'=>'1011', 6.     'Z'=>'1100', '0'=>'11111','1'=>'01111','2'=>'00111', 7.     '3'=>'00011','4'=>'00001','5'=>'00000','6'=>'10000', 8.     '7'=>'11000'

6、,'8'=>'11100','9'=>'11110','.'=>'010101', 9.     ','=>'110011','/'=>'10010','-'=>'10001','~'=>'01010', 1.     '?'=>'001100','@'=>'00101'); 需要注意的是,如果你特别在意内存占用的话,上面的代码可以解释为位(bit)。给每个代码增加一个开始位,就可以形成一个位的模式,每个字符就可以用一个字节来储存。同时,当解析最终编码的时候,要删除开始位左边的位(bit),从而获得真正的变长编码。尽管许多人没有意识到,事实上“时间间隔”是定

7、义莫斯代码的主要因素,所以理解这一点是生成莫斯代码的关键。所以,我们要做的第一件事,就是定义莫斯代码的内部码(即“嘀”和“嗒”)的时间间隔。为了方便起见,我们定义一个“嘀”的声音长度为一个时间单位dt,“嘀”和“嗒”之间的间隔也是一个时间单位dt;定义一个“嗒”的长度为3个dt,字符(letters)之间的间隔也是3个dt;定义单词(words)之间的间隔是7个dt。所以,总结起来,我们的时间间隔表就像下面这样:项目时间长度嘀dt“嘀”/“嗒”之间的间隔dt“嗒”3*dt字符之间的间隔3*dt单词之间的间隔7*dt在莫斯代码中,编码声音的“播放速度”通常用单

8、词数/分钟(WPM)来表示。由于英文单词有不同的长度

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。