引言
DL/T634.5101-2002和DL/T634.5104-2009标准中遥测量的标识类型有归一化值NVA,标度化值SVA,短浮点数R32-IEEE STD 754,本文介绍利用union数据类型完成字节数组向这三种类型转换的方法。
方法
定义union数据类型,该union类型定义了多种不同数据类型的内部变量,但各个内部变量共享一段内存,在不同时间里保存不同的数据类型和长度的变量,此处共只占用4个字节。
typedef unsigned char BYTE;
typedef unsigned long DWORD;
typedef union // 4 bytes
{
bool bBool; // int value
BYTE byBuf[4]; // Buffer
short int nInt; // 16 bits integer
unsigned short int snInt;// 16 bits unsigned integer
long l; // 32位有符号 2,147,483,648 to 2,147,483,647
DWORD dw; // 32位无符号整数 0 to 4,294,967,295
float f; // 32位 3.4E +/- 38 (7 digits)
} EXC_DataType;
归一化值
NVA:=F16[1…16]< −1 … +1−2−15 >
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
2−8 | 2−9 | 2−10 | 2−11 | 2−12 | 2−13 | 2−14 | 2−15 |
S | 2 |