上位机开发必须了解的数据类型

2023-09-01 08:08:36 浏览数 (1)

[通讯] 大端和小端的问题(Big endian and Little endian)

数据类型说明

数据类型是编程语言中非常重要的概念,其作用主要有以下几个方面:

  • 内存分配:不同的数据类型在内存中需要分配不同的空间。例如,整数通常需要占用 4 个字节的内存空间,而浮点数可能需要 8 个字节或更多的空间。因此,正确的数据类型可以确保内存使用效率和程序性能。
  • 数据处理:不同的数据类型可以支持不同的操作和运算。例如,整数可以进行加减乘除等算术运算,而字符串可以进行连接、分割等操作。正确的数据类型可以确保数据处理的正确性和有效性。
  • 输入输出:不同的数据类型需要不同的输入输出方式。例如,整数可以通过标准输入输出进行读写,正确的数据类型可以确保程序能够正确地读写数据。
  • 代码逻辑:不同的数据类型对应不同的含义和用途,因此在编写代码时需要选择正确的数据类型来反映代码逻辑和意图。例如,布尔型变量通常用于控制流程和逻辑判断,而整数和浮点数通常用于数学计算。

综上所述,正确选择和使用数据类型是编程中至关重要的一步,它直接关系到程序的正确性、性能和可维护性。

Tip:

编写程序需要理解数据的本质。例如,int 数据类型下的数字 1065353216 的数据本质是“00 00 80 3F”,而 float 数据类型下的数字 1 的数据本质也是“00 00 80 3F”。然而,当面对数据“00 00 80 3F”时,我们无法确定其代表什么含义。可能会认为 1065353216 太大,显然不对,必然是 float 类型的 1。但这是主观的人为判断,程序并不知道。因此,在解析数据时,必须使用正确的数据类型进行解析,否则会产生乱码。换言之,对于数据来说,应当使用与其原本类型相同的类型进行解析。

#关于数据排列问题

上述的数据表格里有例子,int 数据 100 的本质是 "64 00 00 00",而从我们的人的感官来说,应该是 "00 00 00 64" 比较合理。大部分人的习惯是高位在前,低位在后。但这只是一种规定,数据存储可以有多种排列,大体上分为三种:

  • 小端排列:典型的代表是 C# 语言,三菱 PLC。
  • 大端排列:典型的代表是西门子 PLC。
  • 其他不规则:典型的代表是 modbus 设备。

多种字节顺序,如下表所示:

#ENDIAN

字节顺序,适用于 int16/uint16/int32/uint32/float 数据类型,详细说明见下表。

符号

字节顺序

支持的数据类型

备注

#B

2,1

int16/uint16

#L

1,2

int16/uint16

默认字节顺序

#LL

1,2,3,4

int32/uint32/float

默认字节顺序

#LB

2,1,4,3

int32/uint32/float

#BB

3,4,1,2

int32/uint32/float

#BL

4,3,2,1

int32/uint32/float

#.LEN[H][L][D][E]

当数据类型为 STRING 类型时,.LEN 是必填项,表示字符串需要占用的字节长度,每个寄存器中包含H,L,D 和E 四种存储方式,如下列表格所示。

符号

说明

H

一个寄存器存储两个字节,高字节在前低字节在后。

L

一个寄存器存储两个字节,低字节在前高字节在后。

D

一个寄存器存储一个字节,且存储在低字节。

E

一个寄存器存储一个字节,且存储在高字节。

0 人点赞