消息类
通常定义“消息”类的时候,都需要标记出消息实体的长度,不用“65535”这样的数字明文来表示,看起来不专业,所以用byte[]来表示。一个byte是8位无符号整数,MSDN上的解释是“
Byte 值类型表示值介于 0 和 255 之间的无符号整数”,这就说明一个byte可以记录从0到255的数字,那么256呢,就需要用两个byte来表示,就组成了一个byte[]数组。
根据.Net Framework里边的定义,255会被BitConverter.GetBytes()方法编码成两个byte,第一个byte即byte[0]里边肯定是“11111111”,byte[1]里边是“00000000”,如果再加1变成256,byte[0]就会变成“00000000”,byte[1]进位变成“00000001”,也就是说byte数组中索引越靠后的byte越表示高位的数值。
所以,byte[2]刚好可以表示最大65535
By the way,发现一件事,由于 BitConverter.GetBytes() 方法会把每个值拆分为两个byte表示(像Unicode),所以如果是Int32的话,会被转换为byte[4]的数组,如果是Int16的话,是byte[2]。不明白,为什么?是数字又不是汉字,为什么会4个字节。
转载于:https://www.cnblogs.com/cinlap/articles/1556877.html