JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf

上传人:赵齐羽 文档编号:1499107 上传时间:2021-03-04 格式:PDF 页数:41 大小:2.14MB
下载 相关 举报
JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf_第1页
第1页 / 共41页
JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf_第2页
第2页 / 共41页
JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf_第3页
第3页 / 共41页
JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf_第4页
第4页 / 共41页
JR T 0066.3-2019 《银行间市场业务数据交换协议 第3部分:适流表示层》.pdf_第5页
第5页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、ICS 35.240.40 A 11 JR 中华人民共和国金融行业标准 JR/T 0066.32019 代替JR/T 00662011 银行间市场业务数据交换协议 第3部分:适流表示层 Interbank market information exchange protocol Part 3:Presentation streaming layer 2019 - 01 - 08发布 2019 - 01 - 08实施 中国人民银行 发布 JR/T 0066.32019 目 次 前言 . II 1 范围 . 1 2 术语和定义 . 1 3 语法和结构 . 2 4 编解码语法 . 4 附录A(资料性

2、附录) 错误代码汇总 . 36 I JR/T 0066.32019 前 言 JR/T 0066银行间市场业务数据交换协议分成3部分: 第1部分:语法、结构与会话层; 第2部分:应用层; 第3部分:适流表示层。 本部分为JR/T 0066的第3部分。 本部分依据GB/T 1.12009给出的规则起草。 本部分由中国外汇交易中心暨全国银行间同业拆借中心提出。 本部分由全国金融标准化技术委员会(SAC/TC 180)归口。 本部分负责起草单位:中国外汇交易中心暨全国银行间同业拆借中心。 本部分参与起草单位:中国人民银行科技司。 本部分主要起草人:许再越、姚前、杨富玉、朱荣、叶胜国、姜才康、王成勇、胡

3、剑、李正、陈彬、 胡卫平、沈峻、崔嵬、郦永达、余波、曲维民、孙小林、沈薇薇、茅廷、杨帆、夏志江、孙英昊、包晓 晶、赵俊锋、卢艳民、崔奇、邓钢轶、严璐祎、沈叶。 JR/T 0066于2011年6月2日首次发布,本次为第一次修订。 II JR/T 0066.32019 银行间市场业务数据交换协议 第3部分:适流表示层 1 范围 JR/T 0066的本部分规定了银行间市场参与方基于会话层和应用层的银行间市场成员交互数据进行 适流压缩的协议(Interbank Market Information Exchange Adapted for Streaming,简称IMAST)。 本部分适用于外汇市场、

4、货币市场和衍生品市场的前、中、后台以及债券市场的前、中台,不含债 券市场的后台清算、结算部分。 2 术语和定义 下列术语和定义适用于本文件。 2.1 IMIX适流 IMIX adapted for streaming(IMAST) 一种压缩IMIX报文数据的二进制流。 2.2 编码 encode 将IMIX报文转换成IMAST流的过程。 2.3 解码 decode 将IMAST流转换成报文的过程。 2.4 应用类型 application type IMIX会话层或应用层的域、组件或重复组在适流表示层的抽象概念。 2.5 域指令 field instruction IMIX会话层或应用层的域、

5、组件或重复组在适流表示层的编码规则。 2.6 模板 template 某个场景下若干域指令的集合所实现的编解码控制结构。 2.7 1 JR/T 0066.32019 上下文 context IMAST编码或解码的运行环境。 3 语法和结构 3.1 IMAST协议框架 适流表示层应用模式见图1。 图1 适流表示层应用模式图 IMAST协议框架依赖报文所指向的模板进行编码和解码,形成IMA ST流进行网络传输。 模板是针对某一IMIX报文的编解码控制结构,通过规定报文中域、组件、重复组的顺序和结构、运 算规则、二进制编码表示方法来控制与应用报文相对应的二进制流的编码和解码。模板是包含若干域指 令的

6、序列。 域指令规定报文中域、组件、重复组的编码方式。域指令由名称、应用类型、存在属性和操作符组 成。 应用类型是报文中域、组件或重复组在适流表示层的表现形式。 3.2 IMAST流总体结构 IMAST流的总体结构采用扩展巴科斯范式(EBNF)语法进行定义。 stream:=message*|block* block:=BlockSize message+ message:=segment* segment:=PresenceMap TemplateIdentifier? (field|segment)* field:=integer|string|Decimal|ByteVector IMAS

7、T总体结构图见图2。 IMIX报文 35=8 适流编码 IMAST流 11100000 10000001 01001000 适流解码 IMIX报文 35=8 模板 域指令 应用类型 模板 域指令 应用类型 2 JR/T 0066.32019 图2 IMAST流总体结构图 IMAST流总体结构具体说明如下: a) 流(stream):一个IMAST流(stream)为一个报文的序列(sequence),或为一个块的序列; b) 块(block):块(block)是包含单个或多个报文的一个序列,块带有一个前导的、用来表示 块包含报文所占字节数量的块大小(blocksize); c) 报文(mess

8、age):每个报文(message)由一个段(即报文段)来表示; d) 段(segment):段(segment)由头部和具体域组成。 IMAST流示例如下: 市场数据请求IMIX报文示例见图3。 图3 市场数据请求IMIX报文示例 通过编码后,形成市场数据请求IMAST流,其中PAMP表示占位图,TID表示模板标识符,见图4。 报文 Message 或 段 Segment 报文 Message 报文 Message 块 BlockSizeMessage 报文 Message 报文 Message 报文 Message 占位图 PresenceMap 模板标识符 TemplateIdentif

9、ier(可选) 域 Field 域 Field 子段 Segment 子段 Segment 头部 块 BlockSizeMessage 块 BlockSizeMessage 8=IMIX.2.09=4134=235=V49=CFETS-RMB-CSTP56=IH52=20151208-12:00:00263=21 46=148=CNY10=167 流 Stream 3 JR/T 0066.32019 图4 市场数据请求IMAST流示例 3.3 字节停止位 IMAST流采用停止位编码规则进行编码,即报文中每一个字节都有一个停止位。一个停止位编码实 体是一个字节序列,其中每个字节的最高有效位(th

10、e most significant bit)指示下一字节是否是实 体的一部分。 停止位示例说明见图5。 注:当字节为停止位实体的最后一个字节,停止位设置为1。 图5 停止位示例图 4 编解码语法 4.1 概述 编解码的过程依赖于报文所指向的模板。编码时,编码器通过模板中域的属性对原始消息中的域进 行编码操作,并根据规则生成占位图,从而把占位图和编码后的值输出到报文二进制流中。IMAST接收 端解码器根据接收的报文二进制流里的模板标识符找到模板后,根据模板中对域的编码规则(主要是由 操作符和占位图决定编码)进行解码,还原传输前的报文。 报文实例 字节 字节 字节 字节 字节 字节 第7位 第6

11、位 第5位 第4位 第3位 第2位 第1位 第0位 停止位 数据位 停止位实体 01111111 11111000 10000010 10101001 10000010 11010110 01000011 01000110 01000101 -PMAP-|-TID-|-9号域-|-34-|-35-|- 01010100 01010011 00101101 01010010 01001101 01000010 00101101 01000011 01010011 -39- 01010100 11010000 01001001 11001000 10000000 00110010 00110000

12、 00110001 00110101 -|-56-|-长度-|- 00110001 00110010 00110000 00111000 00101101 00110001 00110010 00111010 00110000 -52- 00110000 00111010 00110000 10110000 10000010 10000001 01000011 01001110 11011001 -|-263-|-146-|-48-| 00000001 10000111 -10- 4 JR/T 0066.32019 4.2 应用类型 应用类型能被映射为下列模型: a) 基本类型:包含整数类型、

13、十进制小数类型、字符串类型、字节向量类型; b) 组件类型:一个包含无序的域指令的集合; c) 重复组类型:一个包含长度及有序的若干组件类型的域指令的集合。 应用类型模型见图6。 图6 应用类型模型图 4.3 模板 4.3.1 概述 模板的定义应使用XML表达,由“”元素定义。一个模板定义的XML文档可包含单个 模板或多个模板的集合。模板集合应封装在“”元素中,该元素可包含应用于整个封装 的模板集合的命名空间参数。 4.3.2 语法规则 模板语法规则定义如下: start=templates|template templates=element templatesnsAttr?,templat

14、eNsAttr?,dictionaryAttr?,template* template=element templatetemplateNsName,nsAttr?,dictionaryAttr?,instruction* instruction=field 注: templates:多个模板; template:单个模板; element templates:多个模板元素; 应用类型 基本类型 模板 模板名称 模板标识符 十进制小数域指令 整数域指令 字符串域指令 字节向量域指令 组件域指令 重复组域指令 十进制小数类型 整数类型 字符串类型 字节向量类型 组件类型 重复组类型 5 JR/T

15、 0066.32019 element template:单个模板元素; nsAttr?:命名空间属性,可选元素; templateNsAttr?:模板命名空间属性,可选元素; dictionaryAttr?:字典属性,可选元素; template*:N个模板; templateNsName:模板命名空间名; instruction*:N个域指令。 示例: 下面的XML片段是采用具体语法格式的一个模板定义的例子。 6 JR/T 0066.32019 4.3.3 标识符 模板标识符在数据流中报文段头部,表示该报文所使用的模板,以一个无符号整数来表示。如果过 长,则产生可报告错误ERR R6。 如

16、果一个解码器无法找到与数据流中出现的模板标识符所关联的模板,则产生动态错误ERR D9。 模板标识符的编码与拷贝操作符的用法相同。拷贝操作符使用全局字典,且具有所有模板标识符域 公用的一个内部关键字(Key)。拷贝操作符定义见4.6.7。 4.3.4 名称 4.3.4.1 定义规则 模板名称的定义由两部分组成:命名空间(namespace)URI和本地名称。 使用应用类型、域和操作符关键字的命名空间URI由“ns”参数指定。 模板的命名空间URI由“templateNs”参数指定。 本地名称由参数“名称(name)”指定。 两个名称相同,当且仅当它们的命名空间标识符和本地名称都相同。 4.3.

17、4.2 语法规范 模板名称语法规范定义如下: nsName=nameAttr,nsAttr?,idAttr? templateNsName=nameAttr,templateNsAttr?,idAttr? nameAttr=attribute nametoken nsAttr=attribute nstext templateNsAttr=attribute templateNstext idAttr=attribute idtoken 注: nsName:命名空间名; nameAttr:名称属性; nsAttr?:命名空间属性,可选元素; 7 JR/T 0066.32019 idAttr?:

18、标识符属性,可选元素; templateNsName:模板命名空间名; templateNsAttr?:模板命名空间属性,可选元素。 4.3.5 指令 模板指令是包含若干指令的序列。指令应与数据在流中的位置相对应。 模板指令主要采用域指令,规定域的实例编码和二进制流的方法。 4.4 上下文 上下文规定编码和解码的运行环境,应包括: a) 模板的集合; b) 当前模板; c) 域指令的集合; d) 当前的域指令; e) 字典集合; f) 可选的初始值。 当前模板指正被处理的模板,在流中处理到一个模板标识符时当前模板被更新。对静态模板的引用 也可引起当前模板的改变。 4.5 域指令 4.5.1 定

19、义 域指令由名称、应用类型、存在属性和操作符组成。 域指令通过名称区分,名称在单个组件内具有唯一性。 应用类型规定了域的基本编码方法,具体包括:整数(integerField)、十进制小数(decimalField)、 ASCII码字符串(asciiStringField)、Unicode字符串(unicodeStringField)、字节向量 (byteVectorField)、重复组(sequence)、组件(group)。 存在属性用于指示域指令是必选域(mandatory)或者是可选域(optional)。如果存在属性未被 指定,则该域指令为必选。 域操作符是可选信息,用于规定域指令编

20、码的优化传输方式。除组件域和重复组域之外的域可定义 其域操作符。 4.5.2 空值属性 每个域指令的应用类型具有一个空值(nullability)的属性。如果类型为可空(nullable),则 NULL值采用一种特殊表示方式。如果类型不可空(non-nullable),则不保留任何NULL的表示方式。所 有的可空类型按照以下方式构建,即NULL由所有位均为0的7位实体值来表示。在使用停止位编码时,NULL 由0 x80来表示。 除非明确指定,否则缺省使用不可空的表示方式。 4.5.3 语法规则 域指令语法规则如下: field=integerField|decimalField|asciiSt

21、ringField|unicodeStringField|byteVectorField| sequence|group 8 JR/T 0066.32019 fieldInstrContent=nsName,presenceAttr?,fieldOp? presenceAttr=attribute presencemandatory|optional 注: integerField:整数域指令; decimalField:十进制小数域指令; asciiStringField:ascii码类型字符串域指令; unicodeStringField:unicode字符串域指令; byteVector

22、Field;字节向量域指令; sequence:重复组域指令; group;组件域指令; nsName:域指令命名空间名; presenceAttr:存在属性,可选元素; fieldOp:域操作符,可选元素。 4.5.4 分类 4.5.4.1 整数域指令 4.5.4.1.1 概述 整数域指令的类型包括32位无符号整数(uInt32),32位整数(int32), 64位无符号整数(uInt64), 64位整数(int64)。 整数(Integer)在传送编码中的大小不受限。 所有的整数域指令使用大尾端(big endian)方式来表示,其中位元和字节均采用网络字节顺序, 即高位在低位前,高字节在

23、低字节前。 4.5.4.1.2 有符号整数域指令 实体的值为一个补码TWOC。实体值的最高有效位为符号位。 4.5.4.1.3 无符号整数域指令 实体值即为整数的二进制表示形式。 4.5.4.1.4 语法规则 整数域指令语法规则如下: integerField = element int32fieldInstrContent |element uInt32fieldInstrContent |element int64fieldInstrContent |element uInt64fieldInstrContent 注: integerField:整数域指令; fieldInstrConte

24、nt:域指令内容; 前缀“int”表示域是带符号的,“uInt”则表示域是无符号的。 4.5.4.1.5 错误发生 9 JR/T 0066.32019 整数由停止位编码实体表示。如果一个整数在移除7位或7位以上的最高有效位后,实体值还是表示 相同的整数,则该整数过长(ov erlong)。如果在流中出现一个过长的整型数,除非该整数被用作块大 小,否则产生可报告错误ERR R6。 如果数据流中的整数大于特定类型的最大值,或小于指定类型的最小值,则产生动态错误ERR D2。 各整数类型最大值和最小值见表1。 表1 各整数类型最大值和最小值 类型 最小值 最大值 int32 -2147483648

25、2147483647 uInt32 0 4294967295 int64 -9223372036854775808 9223372036854775807 uInt64 0 18446744073709551615 4.5.4.1.6 编码示例 可选的正数定义如下: 可选的正数编码示例见表2。 表2 可选的正数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 942755 0 x0e 0 x62 0 xa3 00001110 01100010 10100011 0 x39 0 x45 0 xa4 00111001 01000101 10100100 注:停止位由黑体表示。符号

26、位由下划线表示。域可选且值非负,所以自加1。 必选的正数定义如下: 必选的正数编码示例见表3。 表3 必选的正数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 942755 0 x0e 0 x62 0 xa3 00001110 01100010 10100011 0 x39 0 x45 0 xa3 00111001 01000101 10100011 注:停止位由黑体表示。符号位由下划线表示。域为必选,因此不自加1。 可选的负数定义如下: 可选的负数编码示例见表4。 表4 可选的负数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 -942755 0 xf

27、1 0 x9d 0 x5d 11110001 10011101 01011101 0 x46 0 x3a 0 xdd 01000110 00111010 11011101 10 JR/T 0066.32019 输入值 本地十六进制/二进制 IMAST十六进制/二进制 注:停止位由黑体表示。符号位由下划线表示。域为可选的负数,因此不自加1。 必选的负数定义如下: 必选的负数编码示例见表5。 表5 必选的负数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 -7942755 0 xff 0 x86 0 xcd 0 x9d 11111111 10000110 11001101 10

28、011101 0 x7c 0 x1b 0 x1b 0 x9d 01111100 00011011 00011011 10011101 注1:本地十六进制/二进制中,最左端位的高值被抛掉。 注2:IMAST十六进制/二进制中,停止位由黑体表示。符号位由下划线表示。域为必选,因此不自加1。 带符号位扩展的必选的正数定义如下: 带符号位扩展的必选的正数编码示例见表6。 表6 带符号位扩展的必选的正数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 8193 0 x20 0 x01 00100000 00000001 0 x00 0 x40 0 x81 00000000 010000

29、00 10000001 注:停止位由黑体表示。符号位由下划线表示。表示符号所必需的符号位扩展(斜体)。域必选,因 此不自加1。 带符号位扩展的必选的负数定义如下: 带符号位扩展的必选的负数编码示例见表7。 表7 带符号位扩展的必选的负数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 -8193 0 xff 0 xdf 0 xff 11111111 11011111 11111111 0 x7f 0 x3f 0 xff 01111111 00111111 11111111 注:停止位由黑体表示。符号位由下划线表示。表示符号所必需的符号位扩展(斜体)。域为必选, 因此不自加1。

30、 无符号可选的整数定义如下: 无符号可选的整数编码示例见表8。 11 JR/T 0066.32019 表8 无符号可选的整数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 null N/A 0 x80 10000000 0 0 x00 0 0 x81 10000001 1 0 x01 1 0 x82 10000010 942755 0 x0e 0 x62 0 xa3 1110 01100010 10100011 0 x39 0 x45 0 xa4 00111001 01000101 10100100 注:停止位由黑体表示。域可选,因此自加1。 无符号必选的整数定义如下: 无

31、符号必选的整数编码示例见表9。 表9 无符号必选的整数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 0 0 x00 0 0 x80 10000000 1 0 x01 1 0 x81 10000001 942755 0 x0e 0 x62 0 xa3 1110 01100010 10100011 0 x39 0 x45 0 xa3 00111001 01000101 10100011 注:停止位由黑体表示。域必选,因此不自加1。 4.5.4.2 十进制小数域指令 4.5.4.2.1 概述 十进制小数域指令包含两部分:指数(exponent)部分和尾数(mantissa)部分

32、。该域指令两部分 整体使用单个域操作符,或者两部分使用各自的操作符。整个十进制小数未指定操作符,或只指定了单 个操作符,则运算对象被当成一个十进制小数表示的数值,在编码传输过程中表示为一个带比例数 (Scaled Number)。 带比例数(Scaled Number)由一个尾数和一个指数表示。 为了计算效率,浮点数使用以2为底的指数,但为了支持十进制数的确切表示形式,带比例数采用 了以10为底数的指数。 V=SB E 式中: V数值; S尾数; B底数; E指数。 12 JR/T 0066.32019 其中,数值由尾数和10的指数次方相乘来得到。 带比例数由一个带符号的整数指数及其之后的一个

33、带符号的整数尾数来表示。 如果一个带比例数可空,则其指数可空,但尾数不可空。NULL值的带比例数由一个NULL的指数来表 示。当且仅当指数不为NULL时,尾数在流中出现。 当对指数和尾数部分分别应用操作符时,指数和尾数部分所生成的名称是该十进制小数域指令的特 有名称。 如果十进制小数域是可选存在的,并具有单独的操作符,则尾数存在与否取决于指数是否存在,具 体规定见4.7。 4.5.4.2.2 语法规则 十进制小数域指令语法规则如下: decimalField=element decimalnsName,presenceAttr?,(fieldOp|decFieldOp) decFieldOp=

34、element exponentfieldOp?,element mantissafieldOp? 注: presenceAttr:存在属性,可选元素; exponent:指数域操作符; mantissa:尾数域操作符。 4.5.4.2.3 错误发生 虽然指数被看作int32类型,但其值域范围应是-63,63。在应用任何操作符后,如果获得的指数 超出了该范围,则产生可报告错误ERR R1。 当使用单独的操作符时,可对十进制小数科学计数法表示的数的范围和精度进行限制。由于使用某 个操作符引入了限制,造成值不应被编码到该域,则产生动态错误ERR D3。 4.5.4.2.4 编码示例 必选的正十进制

35、小数定义如下: 必选的正十进制小数编码示例见表10。 表10 必选的正十进制小数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 94275500 2 942755 0 x82 10000010 0 x39 0 x45 0 xa3 00111001 01000101 10100011 ASCII码 指数 尾数 指数 尾数 注:停止位由黑体表示。符号位由下划线表示。 尾数按比例缩放的必选的正十进制小数定义如下: 尾数按比例缩放的必选的正十进制小数编码示例见表11。 13 JR/T 0066.32019 表11 尾数按比例缩放的必选的正十进制

36、小数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 94275500 1 9427550 0 x81 10000001 0 x04 0 x3f 0 x34 0 xde 00000100 00111111 00110100 11011110 注:停止位由黑体表示。符号位由下划线表示。指数设为1,以对尾数缩放。 可选的正十进制小数定义如下: 可选的正十进制小数编码示例见表12。 表12 可选的正十进制小数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 94275500 2 94275

37、5 0 x83 10000011 0 x39 0 x45 0 xa3 00111001 01000101 10100011 注:停止位由黑体表示。符号位由下划线表示。域可选且值非负,则指数部分自加1。 可选的负十进制小数定义如下: 可选的负十进制小数编码示例见表13。 表13 可选的负十进制小数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 -9427.55 -2 -942755 0 xfe 11111110 0 x46 0 x3a 0 xdd 01000110 00111010 11011101 注:停止位由黑体表示。符号位由下划线表

38、示。 带符号位扩展的可选的负十进制小数定义如下: 带符号位扩展的可选的负十进制小数编码示例见表14。 表14 带符号位扩展的可选的负十进制小数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 -8.193 -3 -8193 0 xfd 0 x7f 0 x3f 0 xff 14 JR/T 0066.32019 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 11111101 01111111 00111111 11111111 注:停止位由黑体表示。符号位由下划线表示。符号位扩展(斜体)是指定

39、符号所必需的。 采用单个域操作符的可选的正十进制数定义如下: 采用单个域操作符的可选的正十进制数编码示例见表15。 表15 采用单个域操作符的可选的正十进制数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 9427.55 -2 942755 0 xfe 11111110 0 x39 0 x45 0 xa3 00111001 01000101 10100011 注:停止位由黑体表示。符号位由下划线表示。域可选,且在域一级指定了操作符,则PMAP中只占用 单个位元。 采用单独域操作符的可选的正十进制数定义如下: 采用单独域操作符的可选的正十

40、进制数编码示例见表16。 表16 采用单独域操作符的可选的正十进制数编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 9427.55 -2 942755 0 xfe 11111110 0 x39 0 x45 0 xa3 00111001 01000101 10100011 注:停止位由黑体表示。符号位由下划线表示。指数在PMAP中占1位,但尾数在PMAP中不占位。 采用单独域操作符的可选的正十进制数的多PAMP位元定义如下: 采用单独域操作符的可选的正十进制数的多PAMP位元编码示例见表17。 15 JR/T 0066.32019 表17

41、 采用单独域操作符的可选的正十进制数的多PAMP位元编码示例 输入值 分解的输入值 PMAP位 IMAST十六进制/二进制 ASCII码 指数 尾数 指数 尾数 值 编码 值 编码 9427.55 -2(无前 值) -2 942755(无 前值) 942755 11 0 xfe 11111110 0 x39 0 x45 0 xa3 00111001 01000101 10100011 9427.60 -2 无 942760 942760 01 无 0 x39 0 x45 0 xa8 00111001 01000101 10101000 无 NULL NULL 无 无 1 0 x80 10000

42、000 无 注:停止位由黑体表示。符号位由下划线表示。由于使用单独的域操作符,指数和尾数各自在PMAP占单个位元。 4.5.4.3 字符串域指令 4.5.4.3.1 概述 字符串域指令具有一个可选的指示字符串所使用字符集的参数“字符集(charset)”。支持的两 种字符集为:ASCII和Unicode,分别由参数值“ascii ”和“unicode ”表示。 字符集默认为ASCII。当传输编码的字符串为Unicode格式,可对可选的“”元素进行 指定,将基础字节向量的长度前导(length preamble)和某个域指令名称关联。 4.5.4.3.2 ASCII码字符串 ASCII码字符串由

43、一个停止位编码实体来表示。其实体值被作为7位的ASCII码字符的序列进行解码。 位元序列若以7个0位元作为开始,则被称为具有一个零前导。当一个字符串在移除零前导后有剩余 位元,并且剩余位元的前7个位元不全为0,则称该字符串过长(overlong),则产生可报告错误ERR R9。 零前导使用说明见表18。 表18 零前导使用说明 实体值 是否可空 说明 0 x00 否 空字符串。 0 x00 0 x00 否 “ 0”。 0 x00 0 x41 否 “A”,过长。 0 x00 是 NULL值。 0 x00 0 x000 是 空字符串。 0 x00 0 x41 是 “A”,过长。 0 x00 0 x

44、00 0 x00 是 “ 0”。 0 x00 0 x00 0 x41 是 “A”,过长。 16 JR/T 0066.32019 4.5.4.3.3 Unicode字符串 一个Unicode字符串由一个包含UTF -8编码格式的字符串的字节向量来表示。如果一个Unicode字符 串可空,则用一个可空的字节向量来表示。 4.5.4.3.4 语法规则 ASCII码和Unicode字符串语法规则如下: asciiStringField=element stringfieldInstrContent,attribute charsetascii unicodeStringField=element st

45、ringbyteVectorLength?,fieldInstrContent, attribute charsetunicode 注: asciiStringField:ascii字符串域指令; fieldInstrContent:域指令内容; attribute charset:charset属性; unicodeStringField:unicode字符串指令; byteVectorLength:字节向量长度。 4.5.4.4 字节向量域指令 4.5.4.4.1 概述 字节向量域指令由一个无符号整数类型的长度前导及其之后的特定数量的原始字节来表示,并定义 长度域。数据部分每一字节的有效数

46、据位为8位。因此,其数据部分不采用停止位编码。 字节向量可空时,其长度前导也可为空。NULL字节向量由一个NULL长度前导来表示。 在具体语法中,可通过指定“”元素将字节向量的长度前导和某个域指令名称关联。 4.5.4.4.2 语法规则 字节向量域指令语法规则如下: byteVectorField=element byteVectorbyteVectorLength,fieldInstrContent byteVectorLength=element lengthnsName 注: byteVectorField:字节向量域指令; byteVectorLength:字节向量长度; fieldInstrContent:域指令内容; nsName:长度命名空间名。 4.5.4.4.3 编码示例 可选的字节向量定义如下: 可选的字节向量编码示例见表19。 17 JR/T 0066.32019 表19 可选的字节向量编码示例 输入值 本地十六进制/二进制 IMAST十六进制/二进制 长度 值 Null N/A 0 x80 10000000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 标准规范 > 行业标准 > JR金融行业

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1