,根據(jù)配置文件中的配置來設(shè)置待組包報文的屬性,進行組包,當需要修 改待組包報文的屬性時,只需修改配置文件即可,無需對組包的程序進行修改,使得報文的 組包更加簡單。
[0056] 在一種可能的實現(xiàn)方式中,所述S1,包括:獲取所述待組包報文的位圖,根據(jù)所述 待組包報文的位圖,確定所述待組包報文中的所述待設(shè)置字段域。
[0057] 在一種可能的實現(xiàn)方式中,所述字段域的屬性包括:域標號、是否為變長、最大長 度、壓縮后的最大長度、是否壓縮、長度類型、壓縮后的數(shù)據(jù)類型。
[0058] 其中,域標號用例標識每個字段域。是否為變長屬性包括:當值為0時,表示定長; 值為2時,表示為2位變長;值為3時,表示3位變長。最大長度表示字段域的最大長度。壓縮后 的最大長度表示字段域壓縮后的最大長度。是否壓縮包括:當值為〇時,表示不壓縮;當值為 1時,表示壓縮。長度類型包括:當值為0時,表示asc;當值為1時,表示hex。不壓縮的數(shù)據(jù)類 型:ans,z,x(不確定);壓縮的數(shù)據(jù)類型:numer〇
[0059] 在本發(fā)明實施例中,報文包括:8583報文。配置文件可以包括表1中的內(nèi)容:
[0060] 表 1
[0061]
[0062]
[0063]
[0064] 其中,備注部分為該字段域所包含的信息。另外,8583報文最多可以有128個字段 域,這里只是對部分字段域進行舉例。
[0065] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖及具體實施例對本 發(fā)明作進一步地詳細描述。
[0066] 在本發(fā)明實施例中,對8583報文進行組包。
[0067]如圖2所示,本發(fā)明實施例提供了一種報文的組包方法,該方法可以包括以下步 驟:
[0068]步驟201:預先設(shè)置待組包報文的配置文件,所述配置文件包括:所述待組包報文 的字段域的屬性。
[0069] 具體地,可以通過以下方式實現(xiàn)該步驟:調(diào)用void IS08583PutItem(BITSTR* bitstr,int nNo,int nLen,char*pcMsg)函數(shù)對8583的各個字段域的內(nèi)容進行配置。
[0070] 步驟202:獲取所述待組包報文的位圖,根據(jù)所述待組包報文的位圖,確定所述待 組包報文中的所述待設(shè)置字段域。
[0071 ]步驟203:獲取所述待組包報文的配置文件。
[0072]步驟204:根據(jù)所述配置文件,確定每個所述待設(shè)置字段域的屬性。
[0073] 步驟205:根據(jù)確定出的每個待設(shè)置字段域的屬性,設(shè)置每個待設(shè)置字段域,對所 述待組包報文進行組包。
[0074] 具體地,可以通過以下方式實現(xiàn)該步驟:調(diào)用int pack8583_87(char*b8583,int* len,BITSTR*str)打包8583報文。
[0075] 本發(fā)明實施例提供了一種報文的組包方法,可以通過以下代碼實現(xiàn):
[0076]
[0077]
[0079
[0080]
[0081]
[0082]
[0083]
[0084]
[0085] 如圖3所示,本發(fā)明實施例提供了一種報文的組包裝置,包括:
[0086]第一設(shè)置單元301,用于設(shè)置待組包報文的配置文件,所述配置文件包括:所述待 組包報文的字段域的屬性;
[0087]第一確定單元302,用于確定所述待組包報文中的待設(shè)置字段域;
[0088]第一獲取單元303,用于獲取所述待組包報文的配置文件;
[0089] 第二確定單元304,用于根據(jù)所述配置文件,確定每個所述待設(shè)置字段域的屬性;
[0090] 組包單元305,用于根據(jù)確定出的每個待設(shè)置字段域的屬性,設(shè)置每個待設(shè)置字段 域,對所述待組包報文進行組包。
[0091] 在一種可能的實現(xiàn)方式中,所述第一確定單元302,用于獲取所述待組包報文的位 圖,根據(jù)所述待組包報文的位圖,確定所述待組包報文中的所述待設(shè)置字段域。
[0092] 在一種可能的實現(xiàn)方式中,字段域的屬性包括:域標號、是否為變長、最大長度、壓 縮后的最大長度、是否壓縮、長度類型、壓縮后的數(shù)據(jù)類型。
[0093] 如圖4所示,本發(fā)明實施例提供了一種報文的解包方法,該方法可以包括以下步 驟:
[0094] A0:預先設(shè)置待解包報文的配置文件,所述配置文件包括:待解包報文的字段域的 屬性;
[0095] A1:確定所述待解包報文中的待解析字段域;
[0096] A2:獲取所述待解包報文的配置文件;
[0097] A3:根據(jù)所述配置文件,確定每個所述待解析字段域的屬性;
[0098] A4:根據(jù)確定出每個待解析字段域的屬性,解析每個待解析字段域,對所述待解包 報文進行解包。
[0099] 通過本發(fā)明實施例提供的一種報文的解包方法,預先設(shè)置待解包報文的配置文 件,通過該配置文件來配置待解包報文的字段域的屬性,在需要進行解包時,獲取配置文件 中的字段域的屬性,根據(jù)配置文件中的配置來解析待解包報文的每個待解析字段域的屬 性,進行解包,當需要修改待解包報文的待解析字段域的解析方式時,只需修改配置文件即 可,無需對解包的程序進行修改,使得報文的解包更加簡單。
[0100] 另外,這里的配置文件一般是待解包報文在組包時進行配置的配置文件。舉例來 說,在進行組包時,預先設(shè)置配置文件A,根據(jù)配置文件A對報文A進行組包,得到組包后的報 文A。在進行解包時,獲取配置文件A,根據(jù)配置文件A對組包后的報文A進行解包。
[0101] 在一種可能的實現(xiàn)方式中,所述A1,包括:獲取所述待解包報文的位圖,根據(jù)所述 待解包報文的位圖,確定所述待解包報文中的所述待解析字段域。
[0102] 在一種可能的實現(xiàn)方式中,字段域的屬性包括:域標號、是否為變長、最大長度、壓 縮后的最大長度、是否壓縮、長度類型、壓縮后的數(shù)據(jù)類型。
[0103] 其中,域標號用例標識每個字段域。是否為變長屬性包括:當值為0時,表示定長; 值為2時,表示為2位變長;值為3時,表示3位變長。最大長度表示字段域的最大長度。壓縮后 的最大長度表示字段域壓縮后的最大長度。是否壓縮包括:當值為〇時,表示不壓縮;當值為 1時,表示壓縮。長度類型包括:當值為0時,表示asc;當值為1時,表示hex。不壓縮的數(shù)據(jù)類 型:ans,z,x(不確定);壓縮的數(shù)據(jù)類型:numer〇
[0104] 在本發(fā)明實施例中,報文包括:8583報文。配置文件可以包括表1中的內(nèi)容。
[0105] 為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面結(jié)合附圖及具體實施例對本 發(fā)明作進一步地詳細描述。
[0106] 在本發(fā)明實施例中,對8583報文進行解包。
[0107] 如圖5所示,本發(fā)明實施例提供了一種報文的組包方法,該方法可以包括以下步 驟:
[0108] 步驟501:預先設(shè)置待解包報文的配置文件,所述配置文件包括:待解包報文的字 段域的屬性。
[0109] 步驟502:獲取所述待解包報文的位圖,根據(jù)所述待解包報文的位圖,確定所述待 解包報文中的所述待解析字段域。
[0110] 步驟503:獲取所述待解包報文的配置文件。
[0111] 步驟504:根據(jù)所述配置文件,確定每個所述待解析字段域的屬性。
[0112] 步驟505:根據(jù)確定出每個待解析字段域的屬性,解析每個待解析字段域,對所述 待解包報文進行解包。
[0113] 具體地,上述步驟可以通過以下方式實現(xiàn):調(diào)用int unpack8583_87(char*b8583, int 1611,13]^311?*81:1')對待解包報文進行解析。
[0114] 另外,解析成功后,每個字段域的內(nèi)容和長度會填充進固定變量,域內(nèi)容填充進 recvinf〇->