八种基本数据类型:byte、short、int、long、float、double、boolean、char
byte
8位、有符号的以二进制补码表示的整数
 min : -128(-2^7)
 max: 127(2^7-1)
 default: 0
 对应包装类:Byte
 
short
16位、有符号的以二进制补码表示的整数
 min : -32768(-2^15)
 max: 32767(2^15 - 1)
 default: 0
 对应包装类:Short
int
32位、有符号的以二进制补码表示的整数
 min : -2,147,483,648(-2^31)
 max: 2,147,483,647(2^31 - 1)
 default: 0
 对应包装类:Integer
long
64位、有符号的以二进制补码表示的整数
 min : -9,223,372,036,854,775,808(-2^63)
 max: 9,223,372,036,854,775,807(2^63 -1)
 default: 0
 对应的包装类:Long
float
单精度、32位、符合IEEE 754标准的浮点数
 float 在储存大型浮点数组的时候可节省内存空间
 浮点数不能用来表示精确的值,如货币 要用 decimal
 default: 0.0f
 对应的包装类:Float
double
双精度、64位、符合IEEE 754标准的浮点数
 浮点数的默认类型为double类型
 double类型同样不能表示精确的值,如货币
 default: 0.0d
 对应的包装类:Double
char 一个字节 8位
char类型是一个单一的 16 位 Unicode 字符
 最小值是 \u0000(即为0)
 最大值是 \uffff(即为65,535)
 char 数据类型可以储存任何字符
 对应的包装类:Character
boolean
boolean数据类型表示一位的信息
 只有两个取值:true 和 false
 这种类型只作为一种标志来记录 true/false 情况
 对应的包装类:Boolean
BitConverter.IsLittleEndian
BitConverter.IsLittleEndian
 》》True 小端高端 存储数据
 》》False 高端低端 存储数据
大小端转换
因Modbus协议 都是高位地位请求,发送 数据的
 
 BitConverter.IsLittleEndian 本人电脑显示 True, 则 表示 数据存储是 地位 高位 方式存储在电脑之中的
int 300 对应的 二进制 0000 0001 0010 1100

如果用 高位 地位 方法存储

//方法1
 private ushort ReversalHighLow(ushort val)
        {
            if (BitConverter.IsLittleEndian)
            {
                byte[] arrSrc = BitConverter.GetBytes(val);
                byte[] arrDst = new byte[arrSrc.Length];
                arrDst[0] = arrSrc[1];
                arrDst[1] = arrSrc[0];
                return BitConverter.ToUInt16(arrDst, 0);
               
            }
            else
            {
                return val;
            }
        }
    
 // 调用
 ushort st = ReversalHighLow(300);
//方法二
  private ushort ReversalHighLow(ushort val)
        {
            if (BitConverter.IsLittleEndian)
            {
                byte high = (byte)((val - val % 256) / 256);  //数字减去 低8位, 得到的数字再除以256得到高8位
                byte low = (byte)(val % 256);  //数字对256取余数, 得到低8位
                byte[] change1 = { high, low };
                return BitConverter.ToUInt16(change1,0);
            }
            else
            {
                return val;
            }
        }
  // 调用
 ushort st = ReversalHighLow(300);
//方法三
 private ushort ReversalHighLow(ushort val)
        {
            if (BitConverter.IsLittleEndian)
            {
                byte[] bytes = BitConverter.GetBytes(val);
                Array.Reverse(bytes);
                return BitConverter.ToUInt16(bytes, 0);
            }
            else
            {
                return val;
            }
        }
  // 调用
 ushort st = ReversalHighLow(300);
//方法3 
  private ushort ReversalHighLow(ushort val)
        {
            if (BitConverter.IsLittleEndian)
            {
				// 右移8位获取高字节
                byte highByte = (byte)(val >> 8); 
                // &是按位与运算符(同时1则1,否则0),
                // 与16位,高8位是000000000, 低8位是 11111111    (是高位低位方式存储)
                // 16位 ,OXFF:0000000011111111               (是高位低位方式存储)            
                byte lowByte = (byte)(val & 0xFF); 
                byte[] bytes = { highByte, lowByte };
                return BitConverter.ToUInt16(bytes,0);
            }
            else
            {
                return val;
            }
        }
 // 调用
 ushort st = ReversalHighLow(300);
字节数组转换 bool数组


 private List<bool> GetBitFromByte(byte[] val )
        {
            List<bool> bits = new List<bool>();
            for (int i = 0; i < val.Length; i++)
            {
                if (BitConverter.IsLittleEndian)
                {
                    for (int j = 7; j >= 0; j--)
                    {
                        bits.Add((val[i] & 1) == 1);
                        val[i] >>= 1;
                    }
                }
                else
                {
                    for (int j = 0; j <= 7; j++)
                    {
                        bits.Add((val[i] & 1) == 1);
                        val[i] >>= 1;
                    }
                }
               
            }
            return bits;
        }
//调用
  List<bool> bts = GetBitFromByte(BitConverter.GetBytes((ushort)500));
字节数组转成short




















