目前工作使用c#,由于和硬件打交道必然要使用串口通信等内容,而其中一定会使用byte数组用于发送数据(其实字符串也可以),研究了几天觉得有必要记录下来。
首先,byte的本质是啥?其实就是一个8位的二进制数字,也就是说表示从0-255的一个数字,所以byte数组中的数据可以是各种数字,例如下例:
byte[] byteArrary = { 0x01, 0x02, 0x03, 34 };,但是如果将34改为340,vs就会报错,这就是由于超过了255的原因。这里引申出一个问题,如果是一个int型的变量呢?答案是不行!因为这个变量是不确定的有可能超过255。
发送数据常用的语句如下:serialPort1.Write(byteArry, 0, 2);,这句话的含义是将byte数组中从偏移量位置为0的地方开始的2个字节发送至串口,也就是上例中的0x01和0x02。
正是由于这个原因,网上的很多资料的转换都是将其他进制转换为byte数组而不是byte,一开始我也无法理解,具体的转换代码我不详细说明网上有很多,这里整理几个有代表性的:
int转byte byte[] intConvertbyte = System.BitConverter.GetBytes(iNumDec);
string转byte 说白了就是先转ASC码,然后再换,
System.Text.ASCIIEncoding ASCII = new System.Text.ASCIIEncoding();
Byte[] BytesMessage = ASCII.GetBytes(StringMessage);
知道以上两个基本就可以了,纯属个人归纳总结!