字符串是一种数据类型,它是字符的集合。不同的编程环境对字符串的处理不尽相同,下面介绍CODESYS中的字符数据类型。
1、字符串(STRING)
CODESYS的字符串由N个字符和1个结束字符组成。如果在声明字符串变量时没有对长度进行设置,则CODESYS默认分配80个字符长度的内存,加上结束字符,总计长度81个字节。比如下面的变量的声明:strName实际占用内存为81个字节。
strName : STRING;//默认情况下字符串分配80个字节长度
可以在声明变量的同时使用括号“()”指定其字符数量,也就是字符串的长度。
比如下面的变量声明:strRcvData的实际占用内存为201个字节(200个数据字符+1个结束字符)。
strRcvData : STRING(200);//指定字符长度为200个字节
在程序里如果对此变量的赋值超过200个字符,则该变量只会取前200个字符。
CODESYS本身并不限制字符串的长度,不过字符串处理函数只能处理长度为1~255的字符串,因此需要指定字符串长度时,最大应为255。
可以使用单引号来声明字符串常量,比如:
VAR CONSTANT
JK : STRING(5):='Jack';//JK字符串常量,占用6个字节
RS: STRING(5):='Rose';//JK字符串常量,占用6个字节
END_VAR
字符串(STRING)中的字符采用ASCII编码,每个ASCII编码的字符长度为1个字节。ASCII编码最多能表达256种含义,无法处理汉字等东方文字,也就是STRING类型变量无法赋值中文字符。
2、宽字符串(WSTRING)
字符串(STRING)中的字符采用ASCII编码,每个ASCII编码的字符长度为1个字节。ASCII编码最多能表达256种含义,无法处理汉字等东方文字。这种情况下需要采用Unicode编码。Unicode编码采用多个字节表示一个字符,其字符集简写为UCS(Unicode Character Set)。常见的Unicode字符集有UCS-2和UCS-4,UCS-2用两个字节编码,UCS-4用4个字节编码。
宽字符串中的字符是采用Unicode编码的字符,一般情况下使用2个字节表示一个字符。
比如声明一个wstrName的宽字符串:
wstrName :WSTRING; // 声明一个宽字符串
wstrName没有指定字符长度,默认为80个宽字符。宽字符串也需要一个宽字符作为结束字符,因此其默认长度为81个宽字符。假设每个宽字符的长度为2个字节,则该字符串占用内存为162个字节。
当然,为了节省内存,建议在声明字符串时指定其长度,比如:
wstrName10:WSTRING(10);//声明一个宽字符串,长度为10个宽字符
也可以双引号声明宽字符串常量,比如:
VAR CONSTANT
GREETING : WSTRING(2):="你好";//宽字符串常量
END_VAR
{{item.nickname}}
{{key+1}}楼{{item.content}}
{{item2.nickname}}
{{item2.content}}