西门子——不同数据的存储方式

时间: 2023-07-18 admin IT培训

西门子——不同数据的存储方式

西门子——不同数据的存储方式

西门子——不同数据的存储方式(String)

  • 前言
  • 一、String(字符串类型)
    • 1.结构分析
    • 2.声明变量
  • 二、WString(字符串类型——中文)
    • 1.结构分析
    • 2.声明变量
    • 3.举例说明
  • 参考资料


前言

研究通讯时,小问题派生的支线,首次记录String数据类型,后续有时间的再慢慢扩充其他类型。


一、String(字符串类型)

1.结构分析

在西门子S7-300、400、1200、1500系列中,字符串(string)其实是以字符(char)数组的形式表示,最大可分配的空间为256字节。
来看一下结构图示:

由图片可以看出,第一二字节记录了分配长度以及有效长度,因此用于数据存储的长度就只有254个字节,故字符串类型最大长度不能超过254。

2.声明变量

在变量声明区声明如下:

1):默认长度(254),实际偏移256(256 - 0 总共占256字节)
2):设置长度(10) ,实际偏移12 (268 - 256 总共占12字节)

二、WString(字符串类型——中文)

1.结构分析

在西门子S7-300、400、1200、1500系列中,字符串(Wstring)其实是以宽字符(wchar)数组的形式表示,最大可分配的空间为256个wchar,256 * 2个字节。
wchar是用两个char以UTF16编码表示。
关于字符编码的对于转换请看
来看一下结构图示:

由图片可以看出,Wstring是一个宽字符数组(Wchar[]),以两个char组成一个wchar合并记录字符。与string类型相似,第一个wchar记录最大字符数(wchar的个数,不是char的个数),第二个wchar记录实际的字符个数(wchar的个数,不是char的个数),往后就是每个wchar代表着字符对于的UTF16编码。

2.声明变量

在变量声明区声明如下:

1):默认长度(254 个 wchar),实际偏移254 * 2 + 2 * 2= 512(794 - 282 = 512 总共占512字节)
2):设置长度(10 个 wchar) ,实际偏移10 * 2 + 2 * 2 = 24 (818 - 794 = 24 总共占24字节)

3.举例说明

设置如下图:

wstring输入“哇哈” 字符串,拆分一下:

最大长度实际长度
实际值2542Unicode码:0x54C7Unicode码:0x54C8
双Char表示0x00 0xFE0x00 0x020x54 0xC70x54 0xC8

又因为西门子内存存储是大端表示所以数据高位存在低内存中(图中可见:数据254(0x00 0xFE)0x00就是数据高位,地址DBB282就是低内存;0xFE就是数据低位地址DBB283就是高内存)

参考资料

1./?id=335