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


前言

研究通讯时,小问题派生的支线,首次记录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.http://www.founderchip.com/?id=335

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值