标签:数组 eval double get coding 编码 tco ase str
通过TCP连接拿到数据之后,在ReadCallback
函数里面拿到传过来的结果,是个byte[]
。一般我们需要做以下几件事情:
//指示数据存储在此计算机体系结构中的字节顺序(“endianness”)
var isLittleEndian = BitConverter.IsLittleEndian;//true。小端,低位在前面。
主要就是BitConverter
这个对象的使用,就不用自己去写什么规则了。
var str = Encoding.ASCII.GetString(new byte[] {65, 65, 65});
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);
不足的位数需要补足。
var s = "lou";
var strBytes = Encoding.ASCII.GetBytes(s);//指定编码方式。
//拿到[108,111,117] 也就是每个字母的acsii值。
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]
每种类型对应的byte数
把2,8,10,16进制的字符串转成Byte,也就是看他具体表示多少。
var b1 = Convert.ToByte("11",2);//把用2进制表示的11转成字节
把一个byte用2,8,10,16进制表示
var a = Convert.ToString(8,2);//1000
这个可以转byte,不过实际只是一个类型转换。类似强转。float这种有四舍五入。
标签:数组 eval double get coding 编码 tco ase str
原文地址:https://www.cnblogs.com/sheldon-lou/p/12780542.html