TWI461003B - 數據解碼方法 - Google Patents
數據解碼方法 Download PDFInfo
- Publication number
- TWI461003B TWI461003B TW099107844A TW99107844A TWI461003B TW I461003 B TWI461003 B TW I461003B TW 099107844 A TW099107844 A TW 099107844A TW 99107844 A TW99107844 A TW 99107844A TW I461003 B TWI461003 B TW I461003B
- Authority
- TW
- Taiwan
- Prior art keywords
- character
- decimal value
- bit
- array
- standard
- Prior art date
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本發明是有關於一種解碼方法,且特別是有關於一種協議資料單元(Protocol Data Unit,PDU)模式的數據解碼方法。
隨著科技的進步,行動電話的簡訊(Short Message Service,SMS)功能已成為人們進行訊息交流的一個重要途徑。由於簡訊已經深深嵌入人們的日常生活中,因此簡訊內容的豐富度越來越受到關注,更大的字元解碼範圍和更快的解碼速度已經成為強而有力的市場競爭力,同時也更大限度的發揮移動裝置的優勢。
目前大部份行動電話所用來發送和接收簡訊的模式PDU模式,其是用於傳送中/英簡訊,使用的編碼方式分為7位元、8位元及UCS2(2-byte Universal Character Set)編解碼。7位元編解碼用於收發普通的美國資訊交換標準碼(American Standard Code for Information Interchange,ASCII),例如英文字元。8位元編解碼通常用於收發數據消息,例如圖片和鈴聲等。UCS2編解碼則用於收發萬國碼(Unicode)字元,例如中文字元。
其中,7位元編碼用於發送簡單的ASCII字元,它將一串7位元的字元(最高位元為0)編碼成8位元的數據,每8位元被縮減成7位元。然而,傳統PDU模式的7位元解碼方法只能解碼普通的ASCII字元,而在針對特殊字元(例如,£、$、¥、、)的解碼時,便會產生錯誤甚至是失敗的情況。
本發明提供一種數據解碼方法,不僅能夠解碼常用字元,對於擴充字元亦能夠正確解碼。本發明解決傳統PDU模式對一些特殊字元會產生解碼錯誤而導致亂碼的問題,使用戶能夠獲得正確、完整的信息。
具體而言,本發明提出一種數據解碼方法。首先,建立字元對照表,其中字元對照表包括多個索引值與各個索引值所對應的標準字元碼的十進制值。接著,接收由PDU模式所編碼的數據訊息,此數據訊息為位元組陣列,且此位元組陣列包括多個元素。之後,對上述位元組陣列執行位元解碼,以獲得至少一字元字串。然後,判斷解碼後的字元字串的十進制值是否位於一數值範圍。若字元字串的十進制值位於數值範圍內,以此十進制值作為索引值而查詢字元對照表,藉以獲得對應的標準字元碼而轉換為對應的字元。反之,若此字元字串的十進制值未位於數值範圍內,則以此十進制值作為標準字元碼而轉換為對應的字元。
在本發明之一實施例中,上述對位元組陣列執行位元解碼的步驟如下所述。首先,將位元組陣列的元素分別轉換為十六進制,而形成第一字元陣列。接著反轉第一字元陣列的元素,而形成第二字元陣列。之後,將第二字元陣列的元素分別轉換為二進制,並串接這些元素的二進制值而形成為一長字串。然後,以特定位元為單位,將長字串劃分為至少一字元字串。最後,計算字元字串的十進制值。
在本發明之一實施例中,上述建立字元對照表的步驟包括:接收已編碼的至少一字元,以對此字元執行位元解碼,而取得解碼字元的十進制值;查詢標準字元碼對照表,取得解碼字元的十進制值所對應的標準字元碼的十進制值;之後,填入解碼字元的十進制值至索引值欄位,而填入標準字元碼的十進制值至對應的標準字元碼欄位。
在本發明之一實施例中,上述標準字元碼為ASCII碼。另外,上述位元解碼為7位元解碼。此外,上述解碼後字元的十進制值範圍為大於等於0並且小於等於127。
基於上述,本發明建立一字元對照表,擴大了PDU模式的位元解碼範圍,其不僅覆蓋普通常用字元,而且覆蓋了擴充字元。在解碼時,可直接查看字元對照表以快速解碼。據此,對於擴充字元亦能夠正確解碼而不會產生亂碼,大大擴充了簡訊所能輸入的字元。
為讓本發明之上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
傳統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,在步驟S110中,接收由PDU模式所編碼的數據訊息(例如,簡訊),而所接收數據訊息的格式為位元組陣列(byte array),其包括多個元素。舉例來說,以7位元編碼而言,當數據訊息發送方發送的內容為“Δ_ΦΓΛΩΠΨΣΘ”時,其有效長度為12。由於7位元編碼是一種壓縮編碼,12位元組等於12×8個位元。當採用7位元編碼後,獲得84位元((12×8)×(7/8)=84)的資料,而84位元轉換成位元組時有效長度為11。因此,當數據訊息發送方發送的內容為“Δ_ΦTΛΩΠΨΣΘ”時,作為數據訊息接收方所收到的內容是一個有效長度為11的位元陣列rgbMsg,位元陣列中各元素rgbMsg[0]~rgbMsg[11]分別是:15、72、68、50、161、84、44、23、76、70、3以及NULL(空值)。
之後,在步驟S115中,對上述數據訊息進行位元解碼動作,例如7位元解碼。舉例來說,圖3是依照本發明一實施例所繪示的位元解碼的流程圖。為了方便說明,本實施例以“Δ_ΦΓΛΩΠΨΣΘ”為例來進行說明。
請參照圖3,步驟S305,將位元組陣列的元素分別轉換為十六進制,而形成第一字元陣列。也就是說,上述數據訊息的內容是一個字串(存儲在如上所述的rgbMsg位元陣列中),將rgbMsg位元陣列的各元素轉換成16進制的第一字元陣列,其內容依序為0f,48,44,32,a1,54,2c,17,4c,46,03,00。
接著,在步驟S310中,反轉(reverse)第一字元陣列的元素,而形成第二字元陣列。也就是將第一字元陣列的元素由後往前重新排序,則第二字元陣列的內容依序為00,03,46,4c,17,2c,54,a1,32,44,48,0f。
之後,在步驟S315中,將第二字元陣列的元素分別轉換為二進制,並串接這些元素的二進制值而形成為一長字串。也就是說,00(16)
轉換為00000000(2)
,03(16)
轉換為00000011(2)
,46(16)
轉換為01000110(2)
,4c(16)
轉換為01001100(2)
,17(16)
轉換為00010111(2)
,2c(16)
轉換為00101100(2)
,54(16)
轉換為01010100(2)
,a1(16)
轉換為10100001(2)
,32(16)
轉換為00110010(2)
,44(16)
轉換為01000111(2)
,48(16)
轉換為01001000(2)
,0f(16)
轉換為00001111(2)
。而轉換之後的二進制值則形成了一長字串,其長度為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十進制轉換為對應的字元,即“Δ_ΦΓΛΩΠΨΣΘ”。
另外,在步驟S130中,若字元字串的十進制值未位於上述數值範圍內,則以十進制值作為標準字元碼而轉換為對應的字元。例如,倘若字元字串的十進制值為128,則128即為ASCII碼的十進制值,而直接轉換為對應的字元。而在解碼出對應的字元之後,更可將解碼獲得的字元顯示至一輸出裝置(例如,印表機、螢幕等)上。
綜上所述,本發明建立一字元對照表,擴大了PDU模式的位元解碼範圍,其不僅覆蓋普通常用字元,而且覆蓋了擴充字元。在解碼時,可直接查看字元對照表以快速解碼。據此,對於擴充字元亦能夠正確解碼而不會產生亂碼,大大擴充了數據訊息所能輸入的字元。因此,在簡訊應用上,可使用的字元將大幅增加。此外,亦不用更改數據訊息發送端的編碼模式,利用上述解碼方法便能夠正確地解碼各種字元。也就是說,只要於接收端中利用上述數據解碼方法,即能夠正確地解碼出各種字元,而不需變更發送端中的編碼方式,相當方便。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明之精神和範圍內,當可作些許之更動與潤飾,故本發明之保護範圍當視後附之申請專利範圍所界定者為準。
S105~S130‧‧‧本發明一實例的數據解碼方法各步驟
S305~325‧‧‧本發明一實施例的位元解碼各步驟
圖1是依照本發明一實例所繪示的數據訊息解碼方法的流程圖。
圖2是依照本發明一實例所繪示的字元對照表的示意圖。
圖3是依照本發明一實施例所繪示的位元解碼的流程圖。
圖4是依照本發明一實施例所繪示的解碼結果的示意圖。
S105~S130...本發明一實例的數據解碼方法各步驟
Claims (6)
- 一種數據解碼方法,包括:建立一字元對照表,其中該字元對照表包括多個索引值與該些索引值各自對應的一標準字元碼的十進制值;接收由一協議資料單元模式所編碼的數據訊息,該數據訊息為一位元組陣列,該位元組陣列包括多個元素;對該位元組陣列執行一位元解碼,以獲得至少一字元字串;判斷解碼後的該字元字串的十進制值是否位於一數值範圍;若該字元字串的十進制值位於該數值範圍內,以該十進制值作為索引值而查詢該字元對照表,藉以獲得對應的該標準字元碼而轉換為對應的字元;以及若該字元字串的十進制值未位於該數值範圍內,則以該十進制值作為該標準字元碼而轉換為對應的字元,其中,對該位元組陣列執行該位元解碼的步驟包括:將該位元組陣列的元素分別轉換為十六進制,而形成一第一字元陣列;反轉該第一字元陣列的元素,而形成一第二字元陣列;將該第二字元陣列的元素分別轉換為二進制,並串接該些元素的二進制值而形成為一長字串;以一特定位元為單位,將該長字串劃分為至少一字元字串;以及 計算該字元字串的十進制值。
- 如申請專利範圍第1項所述之數據解碼方法,其中建立該字元對照表的步驟,包括:接收已編碼的至少一字元;對該字元執行該位元解碼,以取得一解碼字元的十進制值;查詢一標準字元碼對照表,取得該解碼字元的十進制值所對應的標準字元碼的十進制值;以及填入該解碼字元的十進制值至一索引值欄位,而填入該標準字元碼的十進制值至對應的一標準字元碼欄位。
- 如申請專利範圍第1項所述之數據解碼方法,其中該標準字元碼為美國資訊交換標準碼。
- 如申請專利範圍第1項所述之數據解碼方法,其中該位元解碼為7位元解碼。
- 如申請專利範圍第1項所述之數據解碼方法,其中該數值範圍為大於等於0並且小於等於127。
- 如申請專利範圍第1項所述之數據解碼方法,其中在轉換為對應的字元的步驟之後,更包括:顯示對應的字元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010117860 CN101840394B (zh) | 2010-03-04 | 2010-03-04 | 数据解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201134105A TW201134105A (en) | 2011-10-01 |
TWI461003B true TWI461003B (zh) | 2014-11-11 |
Family
ID=42743771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099107844A TWI461003B (zh) | 2010-03-04 | 2010-03-17 | 數據解碼方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101840394B (zh) |
TW (1) | TWI461003B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541822B (zh) * | 2010-12-21 | 2014-07-02 | 航天信息股份有限公司 | 通信过程中汉字的处理方法和装置 |
CN107919943B (zh) | 2016-10-11 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 二进制数据的编码、解码方法和装置 |
CN109213973B (zh) * | 2018-07-04 | 2023-05-16 | 珠海市特车网络科技有限公司 | Vin码转码存储方法及装置和对应的读取方法及装置 |
CN109586729B (zh) * | 2018-10-23 | 2023-01-17 | 浙江工商大学 | 一种红外编码压缩方法及装置 |
CN110287190A (zh) * | 2019-06-25 | 2019-09-27 | 四川深度在线广告传媒有限公司 | 一种大数据分析自定义编码储存结构及编码、解码方法 |
CN110572162B (zh) * | 2019-07-29 | 2023-02-21 | 邯郸钢铁集团有限责任公司 | 在plc中实现bcd码中的错误码的过滤方法 |
CN111404846B (zh) * | 2020-04-24 | 2023-04-14 | 中国人民解放军火箭军工程大学 | 摩尔斯码射频信号的接收识别方法、装置及模拟电台主机 |
CN111865329A (zh) * | 2020-07-24 | 2020-10-30 | 刘彦君 | 电气二次解码二进制数字信号的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5831560A (en) * | 1996-09-20 | 1998-11-03 | Sun Microsystems, Inc. | S-table approach to data translation |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ES2262000T3 (es) * | 2002-07-15 | 2006-11-16 | Siemens Aktiengesellschaft | Procedimiento y dispositivos para codificar/decodificar documentos estructurados, en particular documentos xml. |
EP1658742B1 (de) * | 2003-08-26 | 2013-10-30 | Gemalto M2M GmbH | VERFAHREN ZUR ÜBERTRAGUNG VON langen TEXTNACHRICHTEN IM TEXTMODE |
KR100661583B1 (ko) * | 2005-10-18 | 2006-12-27 | 엘지전자 주식회사 | 유니코드를 포함하는 에스엠에스 메시지 서비스 기능을가지는 이동통신 단말기 및 그 서비스 방법 |
-
2010
- 2010-03-04 CN CN 201010117860 patent/CN101840394B/zh not_active Expired - Fee Related
- 2010-03-17 TW TW099107844A patent/TWI461003B/zh not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5831560A (en) * | 1996-09-20 | 1998-11-03 | Sun Microsystems, Inc. | S-table approach to data translation |
Also Published As
Publication number | Publication date |
---|---|
CN101840394A (zh) | 2010-09-22 |
CN101840394B (zh) | 2012-12-19 |
TW201134105A (en) | 2011-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI461003B (zh) | 數據解碼方法 | |
WO2016029801A1 (zh) | 编码、解码方法以及编码装置和解码装置 | |
EP2285029A1 (en) | Data transmission method, transmission system and data transmitter | |
WO2020233033A1 (zh) | 信息交互方法、装置及存储介质 | |
WO2017000915A1 (zh) | 组播传输方法、信息提取方法及相应的终端和设备 | |
US8676236B1 (en) | System, method, and computer program for generating a short message service (SMS) message using template codes | |
US9294125B2 (en) | Leveraging language structure to dynamically compress a short message service (SMS) message | |
CN1816170A (zh) | 短信收发的编码转换方法及其应用的网络设备 | |
CN109831409A (zh) | 数据传输方法、装置、计算机可读存储介质及电子设备 | |
WO2011137790A1 (zh) | 通用公共无线接口业务发送/接收方法及装置 | |
CN1181662C (zh) | 手机的手写字符输入方法及具有这种功能的手机 | |
WO2012027932A1 (zh) | 短信编码解码方法、装置以及终端 | |
WO2017157023A1 (zh) | 一种soap报文传输方法及系统 | |
WO2013182079A1 (zh) | 一种对短消息进行编码转换的方法及装置 | |
WO2014029081A1 (zh) | 压缩方法及设备 | |
CN115499506B (zh) | 一种基于lzw算法的mqtt信息传输数据压缩方法及服务器 | |
WO2016145616A1 (zh) | 一种信息传输方法、设备及系统 | |
US9872035B2 (en) | System and method for transcoding data | |
WO2016045007A1 (zh) | 一种接入网节点及寻呼方法 | |
CN107734345B (zh) | 一种图片数据化传输方法及系统 | |
CN109818743B (zh) | 一种椭圆曲线公钥文本化传递方法及系统 | |
CN109587157B (zh) | 一种基于公交车物联网通讯协议的通讯方法 | |
CN112383888A (zh) | 一种短信系统、方法以及设备 | |
US20050070224A1 (en) | Method of using external electronic device on fixed platform to operate short messages through mobile communication device | |
WO2018082219A1 (zh) | 确定bss归属的方法、发送控制帧的方法和相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |