2、subtype
子类型定义
- 别名aliasing:所有类型
- 数值列表value lists:所有类型
- 数值范围value ranges:integer和float适用
- 域值限制field value:structured类型适用
- 字符集限制character set :charstring和universal charstring
- 长度限制length:所有字符串类型和record of和set of
数值列表:可用于文字表示
- 数值范围
- 包括边界(100 .. 609)
- 不包括边界(100 .. !610)
- 长度限制
- 不允许使用不包括边界表达
- 子类可以再派生子类,不允许有循环派生
- 不允许隐式转换,如10+2.0会被拒绝
3、TTCN-3内置类型
同类型可以直接比较,不同类型必须转换
- boolean
- 直接判断true和false
- and,or,xor,not都是直接表示
- integer
- 只有一种integer,可以取任意大小
- tools一般支持带符号的32bit或带符号的64bit
- “/”表示整除,7/2得3;“rem”表示余数,7 rem 2得1
- char2int:把字母取ASCII码
- str2int:只允许数字string
- Float
- 对精度没要求
- 不支持三角函数、幂和log
- rnd产生一个0.0-1.0的伪随机数
- charstring和universal charstring
- 不支持转义序列,双引号可以用一对双引号插入字符串中
- 没有char,表示为长为1的charstring
- substr(字符串,起始点,长度)
- replace(字符串,起始点,替换长度,替换字符串)
- 位计算
- bitstring:1bit
- hexstring:4bits
- octetstring:8bits
- <<和>>:移位,数字不超过string长
- <@和@>:循环移位,数字不超过string长
用户定义类型
- 枚举
- 一个type中不重复
- 多个type中可以重名
- 可以直接赋值,可以比大小
- record
- 类似结构体,有顺序
- value list赋值:部分定义时,使用“-”代替为赋值部分
- ispresent看可选部分是否定义
- set
- 无顺序
- 不能使用列表赋值
- union
- 多个variant,每次只能选一个
- ischosen用于看哪个variant被选择
- list
- 数组(一维、多维):不允许subtype
- record-of
- set-of
嵌套
- 为支持ASN.1的新定义类型
编码、解码
- 互相转换的用法