ASNPER编码标准规范.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ASNPER 编码 标准规范
- 资源描述:
-
ASN.1编码规范及实现方式 一、 ASN.1语言概述 ASN.1(Abstract Syntax Notation Number One),抽象语法描述1,是一种 ISO/ITU-T 原则。该语言描述了一种对数据进行表达、编码、传播和解码数据格式,它提供一整套正规格式用于描述对象构造,具备类似于面向对象程序设计语言中所提供类型机制,可定义任意复杂构造数据类型,而不同数据类型之间还可以有继承关系。因而,ASN.1是以一种独立于计算机架构和语言方式来描述数据构造。同步,ASN.1 描述可以容易地映被射成 C 、C++ 或 Java 数据构造,直接作为应用程序代码使用,并得到运营程序库支持。 ASN.1作为一种数据表达原则产生于20世纪80年代初期开放系统互联(OSI)网络模型,虽然OSI模型并没有得到广泛应用,但是ASN.1原则在继续进化。今天已有大量实际应用,这些应用涉及:3G移动系统、IP语音、安全应用、老式电信网络、军事和空间应用等许多方面。 此外,ASN.1 有各种原则化编码规则:如基本编码规则(BER)、规范编码规则(CER)、辨认名编码规则(DER)、压缩编码规则(PER)和 XER 编码规则(XER)。这些编码规则描述了如何对 ASN.1 中定义数值进行编码,以便用于传播,而与计算机、编程语言或它在应用程序中如何表达等因素无关。同步,该编码具备先进标记系统、信息扩展性、支持迅速可靠传播等特点,这在无线传播中是一种优势。 因而,ASN.1不但适合表达当代通信应用中那些复杂、变化及可扩展数据构造,并且尚有适合合同编码方式。同步,3GPP原则ASN.1文档中也包括了完整、详细数据单元(PDU)合同。这些都为3G移动系统中ASN.1应用打下了基本。3G合同ASN编码跟普通编码相比具备高效性、严谨性以及规范性等特点。 二、PER 编码简介 3GPP规范中,由ASN.1到传播码转换统一使用定义在ITU-T X.691中PER(Packed Encoding Rules)规则,因而这里讲ASN编译码规则也就是ASN编码中PER编译码规则。 PER 有两个变体:对齐方式和非对齐方。对齐方式用于:Iub、Iur、Iu 接口ASN.1 传播编码。非对齐方式:仅用于空中(UU)接口ASN.1转换,两者编码过程基本相似。 在对齐方式下,若前面所有单元信息经编码后得到比特流长度不是一种八位组倍数,而后一种信息又是以八位组为单位(字符串),那么就需要在前面生成比特流背面补“0”,使其长度为8倍数。因此普通补位数为0~7bit。而非对齐方式无此限制。所有信息单元按编码规则生成比特数据将按其被编码顺序首尾相连,中间不需要任何填充。按ITU-T X.691规定,若最后编码结束后。所得编码不是8倍数,信息编码结束后填充由RRC负责。 此外,PER编译码必要依赖于3GPP原则文档,也就是说,收发双方也必要懂得层3消息详细构造,这样编码和译码才干被编译和辨认。 三、PER编码规则 PER编码规则定义了各种数据类型,简朴地可分为两大类。第一类是构造类,如CHOICE、SEQUENCE 、ENUMERATED 等。另一类是简朴类,如INTEGER、REALL 、BOOLEAN 等。下面将对如下惯用类型编码规则做一种总结: 3.1 INTEGER 整型是合同规范中用得最多一种数据类型。对这种数据类型编码之前,一方面要拟定其取值范畴,即上下界之间数个数。而编码长度是依照数范畴来拟定。当2m<范畴≤2m+1时,对该整数取值用m+1位二进制表达。但对范畴内数编码不是对其实值而是对其索引值进行编码,编码索引值是从0开始。 例1: TimeslotNumber ::= INTEGER (0..14) 上面例子中TimeslotNumber为整型,范畴是0~14共15个数,由于23<15<24,故编码为4bit,若取值为7,则编码为0111。 例2: MaxAllowedUL-TX-Power ::= INTEGER (-50..33) 同理,MaxAllowedUL-TX-Power为整型,范畴是-50~33共84个数,26<84<27编码长度为7bit,若取值为0,则编0索引值50(-50索引值为0),因而编码为:0110010。 3.2 BOOLEAN 布尔逻辑型编码只须1bit。用“1”表达TRUE,“0”表达FALSE。 例:DL-TM-RLC-Mode ::= SEQUENCE { segmentationIndication BOOLEAN } 上面segmentationIndication是一种 BOOLEAN型,意思是段批示。当咱们需要这种批示时编码为1,不需要时编码为0。 3.3 BITSTRING 比特串编码提成两种状况:长度固定:直接将比特串与前面比特流叠加即可;长度可变:按前述整型编码规则,以描述长度范畴至少比特原则在比特串前面加上用于描述长度所需比特,然后将待编码比特串加在后边。 例1: RoutingParameter ::= BIT STRING (SIZE (10)) 上面RoutingParameter是一种定长,且长度为10比特串,编码时直接给出10位二制数,例如编码为:‘’。 例2: SIB-Data-variable ::= BIT STRING (SIZE (1..214)) SIB-Data-variable是一种变长比特串,编码之前一方面编长度,由于长度范畴为1~214共需要编8比特,因而若SIB-Data-variable是一种5位比特串时则编码为:00000100 11111(前面8位是比特串长度编码,背面5位是该比特串值)。 3.4 OCTETSTRING 八位组串编码原则与比特串相似。提成长度可变八位串和长度不可变八位串两种。与比特串编码不同是编码值是八位串而不是比特串。 例: VALUE ::= OCTETSTRING(SIZE(1..8)) 若VALUE值是长度为3八位串,则编码为:010,背面跟着3个由于长度区间为八,因此长度编码L为3位,而3-bmin=2。因而编码为010。背面则跟着3个八位组如:00000000 11111111 00000000 。 3.5 CHARACTER STRINGS 字符串编码方式有各种状况编码方式与BITSTRING 和OCTETSTRING 编码方式类似,只是对不同类型字符串有不同编码办法,下面将着重阐明CHARACTER STRINGS 中惯用NumricString、PrintableString、NameString编码办法: ① NumricString类型中成员为0~9,共十个数。因而在编码时长度可定为4bit(23<10<24).,因而此种类型串编码是每个数字编为4比特。 同理,PrintableString中包括字符为:“a..z”、“A..Z”、“0..9”、“space”、“,”、“(”、“)”,“+”、“、”、“-”、“/”、“.”、“=”、“?”、“:”共74个字符,每个字母应编码为7比特。NameString共52个大小写字母,每个字母编码则为6bit。 ② NumricString 123 编码为: 0001 0010 0011。 NameString “cat”编码为: 011100 011010 100010,上面每个字母编6比特,每个字母值是其在NameString中索引值。 3.6 NULL NULL类型不用编码。 3.7 ENUMERATED 枚举型编码类似于整型,也是以描述枚举内全体成员所需比特数至少原则进行编码。其值范畴从0开始。枚举类型编码时,只对其项索引值编码。 例: Modulation ::= ENUMERATED { mod-QPSK , mod-8PSK } 上面是一种Modulation是枚举类型,编码时,一方面看枚举项个数为2,21=2,因而编码为1bit,当选mod-QPSK调制模式时编码为0,选mod-8PSK调制模式时编码为1。 3.8 CHOICE 选取型编码类似于整型,以至少比特来描述选取体内各成员索引值。值范畴从0开始。与枚举不同是,编完CHOICE索引值,紧接着就应编码索引值相应单元。而枚举型将索引值编完后就结束。下面将以一种例子对这种类型编码进行阐明: 例: NumberOfTransportBlocks::= CHOICE { zero NULL, one NULL, small INTEGER (2..17), large INTEGER (18..512) } NumberOfTransportBlocks是一种选取类型,若信息传播块个数为16,则应当选取CHOICEsmall项,然后在对该项值进行编码。一方面CHOICE里有4项,编码为2bit,small为第3项编码值为2,选取项编码为:10。然后再对small项编码,由于取值为16,索引值为14,整数范畴是2~17共16个数,要编4比特,因而要对索引值14编4比特,即编码为:1110。 3.9 SEQUENCE 普通说来,序列编码后都会产生一种前导位图,用以批示序列中可选项或缺省项与否存在。每以可选项(或缺省项)用1bit来批示,“1”表达存在,“0”表达不存在。若一种序列型中包括n个标注为可选(或缺省)成员,那么,前导位图长度就是n bit。位图中比特顺序与序列中各可选(或缺省)成员排列一致。然后再对SEQUENCE 中各成员进行编码,这种类型相应于C语言中构造。下面将以实例来阐明: IndividualTimeslotInfo-LCR::= SEQUENCE { timeslotNumber INTEGER(1..15) OPTIONAL, tfci-Existence BOOLEAN, midambleShiftAndBurstType MidambleShiftAndBurstType-LCR OPTIONAL, modulation ENUMERATED { mod-QPSK,mod-8PSK }, ss-TPC-Symbols NULL , additionalSS-TPC-Symbols INTEGER(1..15) OPTIONAL } 上面是一种SEQUENCE构造编码时咱们分两步进行: ① 拟定其前导位图. 该构造中有3个可选项,故可拟定位图长度为3bit。咱们依照需要选取其中项,若某项选取了编码位图为1,否则为0。假设咱们选取了timeslotNumber而其他项都不选话,则在对构造内部编码之前应编码为:100 ② 依照SEQUENCE构造内部项,从上到下依次编码。 TimeslotNumber 取值为6,则编码为0101; tfci-Existence 存在TFCI批示,则编码为1; modulation 选取mod-QPSK,编码为0; ss-TPC-Symbols 为空类型,不用编码 综上可得:该构造编码为100 0101 1 0 3.10 SEQUENCE(SIZE(ib..ub))OF component SEQUENCE OF在ASN.1描述中用作循环。循环次数由SIZE 拟定。SEQUENCE OF前导比特为SIZE中数范畴,编码规则与整数型相似。紧跟在前导比特之后是循环体成员component编码,component可以是构造也可以是一种整型参数。各成员编码后顺序放置,每两个成员之间编码值不需分隔符,该类型相应于C语言中数组。下面将以一种例子来阐明: MNC ::= SEQUENCE (SIZE (2..3)) OF Digit Digit ::= INTEGER (0..9) 上面MNC移动网络码,在上面循环中咱们将分几步阐明: ①一方面拟定其循环次数,由SIZE (2..3)可知其循环次数为2~3次,普通咱们选取2次,则编码为0。 ②第一次对Digit进行编码为:0010(取值为2)。 ③第二次对Digit进行编码为:0011 (取值为3)。 综上,对该循环编码为: 0 0010 0011。 四、PER编码实例分析 下面我将以手机释放流程中RRC CONNECTION RELEASE消息为例讲述PER编译码过程: 手机释放合同流程分CC层释放、RRC释放等2个阶段。其详细合同流程如图1所示。 UE 通话过程 DISCONNECT RELEASE RELEASE COMPLETE RRC CONNECTION RELEASE RRC CONNECTION RELEASE COMPLETE NETWORK 图1手机释放合同流程 上面合同流程是通话完毕后终结UE和网络连接过程,涉及两个某些,前一种某些是完毕呼喊终结过程,背面一某些是信令链路释放过程,涉及释放UE和UTRAN之间所有无线承载和释放所有建立信令连接。这里我将在下行公共控制信道上消息RRC CONNECTION RELEASE 为例来阐明这条消息编码: DL-CCCH-Message ::= SEQUENCE { integrityCheckInfo IntegrityCheckInfo OPTIONAL, message DL-CCCH-MessageType } ① 编码:0 。上面SEQUENCE构造有一种可选项,要编一种1bit位图,该项选取编码为1,否则为0。 DL-CCCH-MessageType ::= CHOICE { cellUpdateConfirm CellUpdateConfirm-CCCH, rrcConnectionReject RRCConnectionReject, rrcConnectionRelease RRCConnectionRelease-CCCH, rrcConnectionSetup RRCConnectionSetup, uraUpdateConfirm URAUpdateConfirm-CCCH, spare3 NULL, spare2 NULL, spare1 NULL } ② 编码:010。CHOICE构造编码办法是:一方面对选取项索引值进行编码,然后对选取项进行编码,每次只能选取一项。这里010是对索引值编码,由于供选取项共有8项,23=8编3bit,而索引值是从0开始,因此这里第三项编码值为2。 RRCConnectionRelease-CCCH ::= CHOICE { r3 SEQUENCE { rrcConnectionRelease-CCCH-r3 RRCConnectionRelease-CCCH-r3-IEs, rrcConnectionRelease-CCCH-r3-add-ext BITSTRING OPTIONAL }, later-than-r3 SEQUENCE { u-RNTI U-RNTI, rrc-TransactionIdentifier RRC-TransactionIdentifier, } } ③ 编码为:0 0 。一方面上面是一种CHOICE构造,共有两项编1bit,咱们选取第一项编码为0;r3 为一种SEQUENCE 构造,有一种可选项,此处不选,编码为0。 RRCConnectionRelease-CCCH-r3-Ies ::= SEQUENCE { u-RNTI U-RNTI, rrcConnectionRelease RRCConnectionRelease-r3-IEs } U-RNTI ::= SEQUENCE { srnc-Identity SRNC-Identity, s-RNTI S-RNTI } SRNC-Identity ::= BIT STRING (SIZE (12)) S-RNTI ::= BIT STRING (SIZE (20)) ④ 编码为0000 0000 0001 ; 0000 0000 0000 0000 0001。RRCConnectionRelease-CCCH-r3-IEs为SEQUENCE构造,没有可选项,因而两项都要编码。第一项SRNC-Identity是定长比特串类型,编码时直接给出12bit长串。同理第二项为20bit长串。 RRCConnectionRelease-r3-IEs ::= SEQUENCE { rrc-TransactionIdentifier RRC-TransactionIdentifier, n-308 N-308 OPTIONAL, releaseCause ReleaseCause, rplmn-information Rplmn-Information OPTIONAL } ⑤ 编码:10 。 RRCConnectionRelease-r3-IEs为一种SEQUENCE构造上面有2个可选项,位图长度为2bit,第一项编码,第二项不编码,因而位图为10。 RRC-TransactionIdentifier ::= INTEGER (0..3) N-308 ::= INTEGER (1..8) ⑥ 编码:00;001。整型RRC-TransactionIdentifier范畴为0~3。共4个取值,编码为2bit,这里取值0编码为00。同理整型N-308编码长度应为3bit,取值为2,编码为001(注意是对索引值编码)。 ReleaseCause ::= ENUMERATED { normalEvent, unspecified, pre-emptiveRelease, congestion, re-establishmentReject, directedsignallingconnectionre-establishment, userInactivity, spare } ⑦编码:000。ReleaseCause为枚举类型,枚举类型编码只是对选项索引值编码,释放过程属于正常事件,故选第一项,编码为000。 由于上面编码是在空中(UU)接口上传播,为了尽量少传播比特,编码是采用是PER编码非对齐方式,在这种方式下,上面每一步生成编码依次叠加直到编码结束,然后以八个比特为单位构成八位组,若不够则在编码末尾添零。 上面编码后构成串为:0 010 00 00000001 10 00 001 000 提成八位组为:00100000 00000000 01000000 00000000 00000110 00001000正好构成六个八位组,因而不用添零。 转换成十六进制编码为:20 00 40 00 06 08。 五、PER手工编译码总结 PER编码中,对齐方式编码,添加0前提是前面编码不能构成一种或者各种八位组,而背面编码长度是一种或各种八位组长度,在这种状况下需要添加0。否则,就在前面码背面继续叠加,最后再以八个位一组提成各种八位组。因而,编码过程中,每到下一种编码长度是一种或各种八位组时,就得把前面码提成一种或各种字节,并也许会添加0,添0个数为0到7个。而非对齐方式则始终叠加到编码编完后,再提成各种八位组。在编码最后若剩余是0到7比特,这种状况下再添加0,因而非对齐方式最多添7个0,而对齐方式是每次最多添7个0,但次数不不大于或等于1次。 例如:XX ::= SEQUENCE { r-TransactionIdentifier R-TransactionIdentifier, releaseIdentifier ReleaseIdentifier, rplmn-information Rplmn-Information } RRC-TransactionIdentifier ::= INTEGER (0..3) ReleaseIdentifier ::= INTEGER (0..255) Rplmn-Information ::= BIT STRING (SIZE (7)) 设RRC-TransactionIdentifier取值为2,则编码为11。 ReleaseIdentifier取值为80,则编码为0101 0000。 Rplmn-Information取比特为“1011101”。 在对齐方式下编码为:11 000000 01010000 1011101 0 在非对齐方式下编码为:11 010100 0 0 101110 1 0000000 PER译码过程与PER编码过程相反,与PER编码不同是,在译码之前并不懂得程序树型构造,只有依照编码和3GPP文档在译码过程中才干将程序提取出来,若在此过程中出错普通不能立即检查出来,在后续译码中可以逐渐验证,因而译码过程也必要认真谨慎,否则会走诸多弯路。 总之,通信合同PER编译码是以3GPP合同文档为基本,在掌握其编译码规则之后,还规定认真、细心编译合同,这样才可以对的完毕编译码。 六、软件编译码 对于软件编码,还是以上面手机释放过程RRC CONNECTION RELEASE消息为例来阐明:软件编码原理与上面编码原理同样,但机器在编码之前必要懂得3GPP原则合同25.331程序构造,并且有相应参数赋值,这样机器才可以将参数赋在固定合同构造中并编出唯一对的码,由于该流程中所有消息ASN描述都在文档25.331里面,因而咱们只需在将25.331整个文档当成原则ASN合同,然后给所要编码那条消息赋值后,控制软件输出相应消息编码即可。下面将分环节阐明软件编码过程: 1. 给所要编码消息RRC CONNECTION RELEASE赋值,并将其加在将要运营ASN程序背面,在程序结束符END之前。下面是对RRC释放赋值(赋值每个参数就是上面手工编码时所选取参数): myRRCConnectionRelease DL-CCCH-Message ::= { message rrcConnectionRelease :r3: { rrcConnectionRelease-CCCH-r3 { u-RNTI { srnc-Identity '0000 0000 0001'B, s-RNTI '0000 0000 0000 0000 0001'B }, rrcConnectionRelease-r3 { rrc-TransactionIdentifier 0, n-308 2, releaseCause normalEvent } } } } 2. 打开OSS软件运营界面。 3. 按下 键,找到赋了值ASN文献,然后点Add键,将该文献添加到运营栏中。 4. 按下键,在Output.c File中设立文献输出格式,由于该消息是在空中传送,为了尽量减少冗余比特,合同规定了选取PER非对齐编码方式。因而选取UNALIGEND PER encode/decode项。 5. 按下键,若程序运营无误,ASN文献了生成.C和.H文献到OSS软件output文献夹中。 6. 将生成.C和.H文献放入编码文献夹中使用NMAKE命令生成编码。 在编码文献夹中包具有:lib、bin、include三个文献夹,这三个文献夹是从下载OSS软件中剪切过来;五个应用扩展程序ossdmem.dll、cstrain.dll、ossapi.dll、soedper.dll、soedapi.dll;一种MS-DOS批解决文献switch.to.spartan.dlls; Makefile文献;common.mak文献;encode.c文献; ASN文献和它在OSS软件中生成.c和.h文献。其中makefile文献规定了ASN编码整个过程中一系列规则,涉及需要用到哪些链接文献,存储于哪个文献夹中,运用了哪些隐含规则等等,encode.c文献则控制消息编码范畴。事实上咱们下载OSS软件中有阐明软件以及编译码实例,依照它所给文献修改其中一某些就可以在DOS界面下运营NMAKE命令实现软件编码。 7.输出编码成果 DL-CCCH-Message SEQUENCE [fieldcount (not encoded) = 1] message DL-CCCH-MessageType CHOICE [index = 2] rrcConnectionRelease RRCConnectionRelease-CCCH CHOICE [index = 0] r3 SEQUENCE [fieldcount (not encoded) = 1] rrcConnectionRelease-CCCH-r3 RRCConnectionRelease-CCCH-r3-IEs SEQUENCE [ fieldcount (not encoded) = 2] u-RNTI U-RNTI SEQUENCE [fieldcount (not encoded) = 2] srnc-Identity SRNC-Identity BIT STRING [length (not encoded) = 1.4] 0x0010 s-RNTI S-RNTI BIT STRING [length (not encoded) = 2.4] 0x000010 rrcConnectionRelease RRCConnectionRelease-r3-IEs SEQUENCE [fieldcount (not encoded) = 3] rrc-TransactionIdentifier RRC-TransactionIdentifier INTEGER [length (not encoded) = 0.2] 0 n-308 N-308 INTEGER [length (not encoded) = 0.3] 2 releaseCause ReleaseCause ENUMERATED [length (not encoded) = 0.3] 0 Total PDV length = 6.0 this is the RRCConnectionRelease 4000 0608 将赋值构造参数和手工编码与上面软件编码成果对照可知,编码对的。 七、软件编译码总结 u 软件译码文献夹与编码文献夹文献大某些是相似,不作任何修改。但译码C文献是decode.c文献,该文献与编码时encode.c文献是有很大不同,这两个文献都可以由OSS ASN软件编译码实例C文献修改得来。译码时要注意所译码起始位置和译码消息所在合同单元,编码时也必要阐明要编消息所在合同单元。这样才干编译对的。 u 每次修改ASN文献后,必要将该ASN文献在OSS ASN软件中重新生成.c和.h文献,并将该文献加到编译码文献夹中,这样才干进行下一次编译码。 u 在每次运营NMAKE命令后,最佳运营一次NMAKE CLEAN命令,这样才干将运营过程中生成中间文献去除,而不影响下次重新编译。 总之,软件编译码过程调用OSS ASN软件许多内部文献,是以OSS ASN软件为基本。展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




ASNPER编码标准规范.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2978325.html