数据解码方法

文档序号:6598750阅读:218来源:国知局
专利名称:数据解码方法
技术领域
本发明是有关于一种译码方法,且特别是有关于一种协议数据单元(Protocol Data Unit,PDU)模式的数据译码方法。
背景技术
随着科技的进步,行动电话的简讯(Short Message Service, SMS)功能已成为人 们进行讯息交流的一个重要途径。由于简讯已经深深嵌入人们的日常生活中,因此简讯内 容的丰富度越来越受到关注,更大的字符译码范围和更快的译码速度已经成为强而有力的 市场竞争力,同时也更大限度的发挥移动装置的优势。目前大部份行动电话所用来发送和接收简讯的模式PDU模式,其是用于传送中 /英简讯 ,使用的编码方式分为7位、8位及UCS2(2_byteUniversal Character Set)编 解码。7位编译码用于收发普通的美国信息交换标准码(American Standard Code for Information Interchange,ASCII),例如英文字符。8位编译码通常用于收发数据消息,例 如图片和铃声等。UCS2编解码则用于收发万国码 (Unicode)字符,例如汉字字符。其中,7位编码用于发送简单的ASCII字符,它将一串7位的字符(最高位为0)编 码成8位的数据,每8位被缩减成7位。然而,传统PDU模式的7位译码方法只能译码普通 的ASCII字符,而在针对特殊字符(例如,£、$、¥、 、e)的译码时,便会产生错误甚至是 失败的情况。

发明内容
本发明的目的在于提供一种数据译码方法,不仅能够译码常用字符,对于扩充字 符亦能够正确译码,以解决传统PDU模式对一些特殊字符会产生译码错误而导致乱码的问 题,使用户能够获得正确、完整的信息。本发明提出一种数据解码方法,包括以下步骤首先,建立字符对照表,其中字符 对照表包括多个索引值与各个索引值所对应的标准字符码的十进制值。接着,接收由PDU 模式所编码的数据讯息,此数据讯息为字节数组,且此字节数组包括多个元素。之后,对上 述字节数组执行位译码,以获得至少一字符字符串。然后,判断译码后的字符字符串的十进 制值是否位于一数值范围。若字符字符串的十进制值位于数值范围内,以此十进制值作为 索引值而查询字符对照表,藉以获得对应的标准字符码而转换为对应的字符。反之,若此字 符字符串的十进制值未位于数值范围内,则以此十进制值作为标准字符码而转换为对应的 字符。在本发明之一实施例中,上述对字节数组执行位译码的步骤如下所述。首先,将字 节数组的元素分别转换为十六进制,而形成第一字符数组。接着反转第一字符数组的元素, 而形成第二字符数组。之后,将第二字符数组的元素分别转换为二进制,并串接这些元素的 二进制值而形成为一长字符串。然后,以特定位为单位,将长字符串划分为至少一字符字符 串。最后,计算字符字符串的十进制值。
在本发明之一实施例中,上述建立字符对照表的步骤包括接收已编码的至少一字符,以对此字符执行位译码,而取得译码字符的十进制值;查询标准字符码对照表,取得 译码字符的十进制值所对应的标准字符码的十进制值;之后,填入译码字符的十进制值至 索引值字段,而填入标准字符码的十进制值至对应的标准字符码字段。在本发明之一实施例中,上述标准字符码为ASCII码。另外,上述位译码为7位译 码。此外,上述译码后字符的十进制值范围为大于等于0并且小于等于127。基于上述,本发明建立一字符对照表,扩大了 PDU模式的位译码范围,其不仅覆盖 普通常用字符,而且覆盖了扩充字符。在译码时,可直接查看字符对照表以快速译码。据此, 对于扩充字符亦能够正确译码而不会产生乱码,大大扩充了简讯所能输入的字符。


图1是依照本发明一实例所绘示的数据讯息译码方法的流程图。图2是依照本发明一实例所绘示的字符对照表的示意图。图3是依照本发明一实施例所绘示的位译码的流程图。图4是依照本发明一实施例所绘示的解码结果的示意图。
具体实施例方式传统PDU模式的简讯译码无法正确地对ASCII扩充字符进行译码。为此,本发明 提出一种数据译码方法,不仅能够译码普通ASCII字符,对于ASCII扩充字符亦能够进行译 码。为了使本发明之内容更为明了,以下特举实施例作为本发明确实能够据以实施的范例。图1是依照本发明一实例所绘示的数据译码方法的流程图。请参照图1,首先,在 步骤S105中,建立字符对照表。此字符对照表包括多个索引值与各个索引值所对应的标准 字符码的十进制值。在本实施例中,标准字符码为ASCII码。具体而言,字符对照表的建立 是依据PDU模式来计算各ASCII码的十进制所对应的索引值。举例来说,图2是依照本发明一实例所绘示的字符对照表的示意图。以字符 为例,在接收到已编码的字符时,对其执行位译码,以取得译码字符的十进制值0。 之后,查询ASCII码对照表可得知译码字符的ASCII码十进制值应为64。据此,便可将 译码字符的十进制值0填入至字符对照表的索引值字段,而将对应的ASCII码十进制 值64填入至对应的ASCII十进制值字段中。据此,索引值0所对应的ASCII码的十进制值 则为64。以此类推,可取得其它索引值及对应的ASCII十进制值。另外,在图2中,ASCII十进制值36、64有两个对应的字段,也就是说当索引值为 2或36时,根据此字符对照表的两者所对应的ASCII十进制值都是36。同理,当索引值是 0或64时,两者所对应的都是64。此外,当索引值在大于等于32且小于等于90,以及索引 值大于等于97且小于等于122时,索引值和对应的ASCII十进制值是相等的。接着返回图1,在步骤SllO中,接收由PDU模式所编码的数据讯息(例如,简讯), 而所接收数据讯息的格式为字节数组(byte array),其包括多个元素。举例来说,以7位编 码而言,当数据讯息发送方发送的内容为“ Δ_ΦΓ Λ Ω Π Ψ Σ θ Ξ”时,其有效长度为 12。由于7位编码是一种压缩编码,12字节等于12X8个位。当采用7位编码后,获得84 位((12Χ8)Χ(7/8) =84)的数据,而84位转换成字节时有效长度为11。因此,当数据讯息发送方发送的内容为“ Δ_ΦΓΛΩΠΨΣΘΞ ”时,作为数据讯息接收方所收到的内 容是一个有效长度为11的位数组rgbMsg,位数组中各元素rgbMsg
rgbMsg[12]分别 是:15、72、68、50、161、84、44、23、76、70、3 以及 NULL(空值)。之后,在步骤S115中,对上述数据讯息进行位译码动作,例如7位译码。举例来说, 图3是依照本发明一实施例所绘示的位译码的流程图。为了方便说明,本实施例以“1 Δ_ ΦΓΛΩΠΨΣ Θ Ξ”为例来进行说明。请参照图3,步骤S305,将字节数组的元素分别转换为十六进制,而形成第一字符 数组。也就 是说,上述数据讯息的内容是一个字符串(存储在如上所述的rgbMsg位数组 中),将rgbMsg位数组的各元素转换成16进制的第一字符数组,其内容依序为0f,48,44, 32,al,54,2c,17,4c,46,03,00。接着,在步骤S310中,反转(reverse)第一字符数组的元素,而形成第二字符数 组。也就是将第一字符数组的元素由后往前重新排序,则第二字符数组的内容依序为00, 03,46,4c,17,2c,54,al,32,44,48,Of。之后,在步骤S315中,将第二字符数组的元素分别转换为二进制,并串接这些 元素的二进制值而形成为一长字符串。也就是说,00(16)转换为00000000⑵,03⑽转换为 00000011(2),46(16)转换为 01000110⑵,4C(16)转换为 01001100⑵,17(16)转换为 00010111 ⑵, 2c(16)转换为 00101100⑵,54(16)转换为 01010100⑵,al(16)转换为 10100001⑵,32(16)转换为 00110010⑵,44(16)转换为 01000111 ⑵,48(16)转换为 01001000⑵,0f(16)转换为 00001111 ⑵。 而转换之后的二进制值则形成了 一长字符串,其长度为96位。再来,如步骤S320所示,以特定位为单位,将长字符串划分为至少一字符字符串。 而在本实施例中,以7位译码而言,长字符串会以7位为单元而被划分多组字符字符串。详 细地说,将长字符串由后往前以7个位作为一组字符字符串。其中,由于数据讯息的有效 长度是12,因此不但不够7位字符字符串会被舍弃,倘若超出12组,则第13组7位的字符 字符串也会被舍弃。所划分的12组字符字符串为=0001111,0010000,0011101,0010010, 0010011,0010100,0010101,0010110,0010111,0011000,0011001,0011010。最后,如步骤S325所示,计算上述字符字符串的十进制值,而依序获得15,16,17, 18,19,20,21,22,23,24,25,26。返回图1,在进行位译码之后,如步骤S120所示,判断译码后的字符字符串的十进 制值是否位于一数值范围内。在本实施例中,数值范围为大于等于0并且小于等于127。若 译码后的字符字符串的十进制值落在0 127之内,则执行步骤S125 ;反之,若译码后的字 符字符串的十进制值未落在0 127之内,则执行步骤S130。在步骤S125中,若字符字符串的十进制值位于上述数值范围内,以十进制值作为 索引值而查询字符对照表(如图2),藉以获得对应的标准字符码而转换为对应的字符。举 例来说,图4是依照本发明一实施例所绘示的解码结果的示意图。请参照图4,本实施例是 以上述实施例之数据讯息内容为Δ_Φ ΓΛΩΠΨΣΘΞ ”为例,藉由查询字符对照 表可以得知索引值15、16、17、18、19、20、21、22、23、24、25、26所对应的ASCII十进制分别为 229、916、95、934、915、923、937、928、936、931、920、926。之后,便依据这些 ASCII 十进制转 换为对应的字符,即“螽Δ_Φ Γ Λ Ω Π Ψ Σ θ Ξ ”。另外,在步骤Sl30中,若字符字符串的十进制值未位于上述数值范围内,则以十进制值作为标准字符码而转换为对应的字符。例如,倘若字符字符串的十进制值为128,则 128即为ASCII码的十进制值,而直接转换为对应的字符。而在译码出对应的字符之后,更 可将解码获得的字符显示至一输出装置(例如,打印机、屏幕等)上。综上所述,本发明建立一字符对照表,扩大了 PDU模式的位译码范围,其不仅覆盖 普通常用字符,而且覆盖了扩充字符。在译码时,可直接查看字符对照表以快速译码。据此, 对于扩充字符亦能够正确译码而不会产生乱码,大大扩充了数据讯息所能输入的字符。因 此,在简讯应用上,可使用的字符将大幅增加。此外,亦不用更改数据讯息发送端的编码模 式,利用上述译码方法便能够正确地译码各种字符。也就是说,只要于接收端中利用上述数 据解码方法,即能够正确地译码出各种字符,而不需变更发送端中的编码方式,相当方便。 虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域 中具有通常知识者,在不脱离本发明之精神和范围内,当可作些许之更动与润饰,故本发明 之保护范围当视后附之申请专利范围所界定者为准。
权利要求
一种数据解码方法,包括建立一字符对照表,其中该字符对照表包括多个索引值与该些索引值各自对应的一标准字符码的十进制值;接收由一协议数据单元模式所编码的数据讯息,该数据讯息为一字节数组,该字节数组包括多个元素;对该字节数组执行该位译码,以获得至少一字符字符串;判断译码后的该字符字符串的十进制值是否位于一数值范围;若该字符字符串的十进制值位于该数值范围内,以该十进制值作为索引值而查询该字符对照表,藉以获得对应的标准字符码而转换为对应的字符;以及若该字符字符串的十进制值未位于该数值范围内,则以该十进制值作为该标准字符码而转换为对应的字符。
2.根据权利要求1所述的数据解码方法,其特征在于其中对该字节数组执行该位译 码的步骤包括将该字节数组的元素分别转换为十六进制,而形成一第一字符数组; 反转该第一字符数组的元素,而形成一第二字符数组;将该第二字符数组的元素分别转换为二进制,并串接该些元素的二进制值而形成为一 长字符串;以一特定位为单位,将该长字符串划分为至少一字符字符串;以及计算该字符字符串 的十进制值。
3.根据权利要求1或2所述的数据解码方法,其特征在于 其中建立该字符对照表的步骤,包括接收已编码的至少一字符;对该字符执行一位译码,以取得一译码字符的十进制值;查询一标准字符码对照表,取得该译码字符的十进制值所对应的标准字符码的十进制 值;以及填入该译码字符的十进制值至一索引值字段,而填入该标准字符码的十进制值至对应 的一标准字符码字段。
4.根据权利要求1或2所述的数据解码方法,其特征在于其中该标准字符码为美国 信息交换标准码。
5.根据权利要求1或2所述的数据解码方法,其特征在于其中该位译码为7位译码。
6.根据权利要求1或2所述的数据解码方法,其特征在于其中该数值范围为大于等 于O并且小于等于127。
7.根据权利要求1或2所述的数据解码方法,其特征在于其中在转换为对应的字符 的步骤之后,更包括显示对应的字符。
全文摘要
本发明公开了一种数据解码方法,包括以下步骤建立字符对照表。接着,接收由协议数据单元模式所编码的数据讯息;对上述位数据讯息执行位译码,以获得至少一字符字符串;判断译码后的字符字符串的十进制值是否位于一数值范围。若字符字符串的十进制值位于数值范围内,以此十进制值作为索引值而查询字符对照表,藉以获得对应的标准字符码而转换为对应的字符。反之,若此字符字符串的十进制值未位于数值范围内,则以此十进制值作为标准字符码而转换为对应的字符。本发明建立一字符对照表,扩大了PDU模式的位译码范围,其不仅覆盖普通常用字符,而且覆盖了扩充字符。在译码时,可直接查看字符对照表以快速译码,大大扩充了简讯所能输入的字符。
文档编号G06F17/22GK101840394SQ201010117860
公开日2010年9月22日 申请日期2010年3月4日 优先权日2010年3月4日
发明者王洪丹 申请人:英华达(南昌)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1