c#硬件对接数值转换
2021-03-08 19:26
标签:数组 eval double get coding 编码 tco ase str 通过TCP连接拿到数据之后,在 主要就是 不足的位数需要补足。 每种类型对应的byte数 把2,8,10,16进制的字符串转成Byte,也就是看他具体表示多少。 把一个byte用2,8,10,16进制表示 这个可以转byte,不过实际只是一个类型转换。类似强转。float这种有四舍五入。 c#硬件对接数值转换 标签:数组 eval double get coding 编码 tco ase str 原文地址:https://www.cnblogs.com/sheldon-lou/p/12780542.html数据处理
ReadCallback
函数里面拿到传过来的结果,是个byte[]
。一般我们需要做以下几件事情:
大小端
//指示数据存储在此计算机体系结构中的字节顺序(“endianness”)
var isLittleEndian = BitConverter.IsLittleEndian;//true。小端,低位在前面。
关键对象
BitConverter
这个对象的使用,就不用自己去写什么规则了。实现
字节数组转成
String
var str = Encoding.ASCII.GetString(new byte[] {65, 65, 65});
int,long,float,double
var intBytes = new byte[] {1, 1, 0, 0};
var a = BitConverter.ToInt32(intBytes, 0);
var longBytes = new Byte[] {1, 1, 0, 0, 0, 0, 0, 0};
var b = BitConverter.ToInt64(longBytes, 0);
var floatBytes = new Byte[] {1, 1, 0, 0};
var c = BitConverter.ToSingle(floatBytes, 0);
var doubleBytes = new Byte[] {1, 1, 0, 0, 0, 0, 0, 0};
var d = BitConverter.ToDouble(doubleBytes, 0);
转成字节数组
从String
var s = "lou";
var strBytes = Encoding.ASCII.GetBytes(s);//指定编码方式。
//拿到[108,111,117] 也就是每个字母的acsii值。
从int,long,float,double转
int a = int.MaxValue;
var intBytes = BitConverter.GetBytes(a);
//4个字节 [255,255,255,127]
long b = long.MaxValue;
var longBytes = BitConverter.GetBytes(b);
//8个字节 [255,255,255,255,255,255,255,127]
float c = float.MaxValue;
var floatBytes = BitConverter.GetBytes(c);
//4个字节 [255,255,127,127]
double d = Double.MaxValue;
var doubleBytes = BitConverter.GetBytes(d);
//8个字节 [255,255,255,255,255,255,239,127]
进制转换表示
Convert.ToByte(val)
var b1 = Convert.ToByte("11",2);//把用2进制表示的11转成字节
Convert.ToString(value,toBase)
var a = Convert.ToString(8,2);//1000
下一篇:【终极解决方案】为应用程序池“XXX”提供服务的进程在与 Windows Process Activation Service 通信时出现严重错误。该进程 ID 为“XXXX”。数据字段包含错误号。