加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2016-10-17 09:33:17 所属栏目:PHP教程 来源:站长网
导读:副标题#e# 介绍 我最近遇到一个基于输入文本生成摩斯代码音频文件的需求。几番搜索无果之后,我决定自己编写一个生成器。 下载源代码 2.63 KB 498)this.width=498;' onmousewheel = 'javascript:return big(this)' height="417" width="404" alt="codegen_s
副标题[/!--empirenews.page--]

 

介绍

我最近遇到一个基于输入文本生成摩斯代码音频文件的需求。几番搜索无果之后,我决定自己编写一个生成器。

下载源代码 – 2.63 KB

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

因为我希望通过web的方式访问我的摩斯代码音频文件,所以我决定采用PHP作为我主要的编程语言。上面的截图显示了一个开始生成莫斯代码的网页。 在下载的zip文件中,包含了用于提交文本的网页以及用于生成和展现音频文件的PHP源文件。如果你想测试PHP代码,你需要将网页和相关的PHP文件复 制到启用了PHP的服务器上。

对于许多人来说,莫斯代码就像一些老电影中表现的那样,就是一些“点”和“横线”的序列,或者一连串的哔哔声。显然,如果你想用计算机代码来生成莫 斯代码,这样的了解是远远不够的。这篇文章将会介绍生成莫斯代码的要素,如何生成WAVE 格式的音频文件,以及如何用PHP将莫斯代码转化成音频文件。

莫斯代码

莫斯代码是一种文本编码方式。它的优点是编码方便,而且用人耳就能够方便的解码。本质上,是通过音频(或者无线电频)的开和关,从而形成或短或长的 音频脉冲,一般称作点(dot)和线(dash),或者用无线电术语称作“嘀”和“嗒”。用现代数字通信术语,莫斯代码是一种振幅键控 (amplitude shift keying ,ASK)。

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

在这个项目中,内存占用并不是一个需要特别考虑的问题。所以,我们提出一个简单的编码方案,即用“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', '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','8'=>'11100','9'=>'11110','.'=>'010101', 
  9.      ','=>'110011','/'=>'10010','-'=>'10001','~'=>'01010', 
  10.      '?'=>'001100','@'=>'00101'); 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读