网络通信中常用到 int,string,byte,10进制,16进制之间的转换
int 转 byte
int i = 12;
byte b = (byte)i;
byte 转 int
i = (int)b;
int转byte[]
int startNum = 18888;
byte[] by = BitConverter.GetBytes(startNum); //200 73 0 0
byte[]转int
int num = BitConverter.ToInt32(by, 0);//18888
10进制 转 16进制
string str = Convert.ToString(i, 16);
或
str = i.ToString("X");
使用大写的X,获取的是大写的字符,比如10进制的12转成16进制,使用X则转成C,使用x则转成c
也可以使用str.ToUpper()或str.ToLower()转成大写或小写
或
str = string.Format("{0:X}", i);
16进制 转 10进制
i = Convert.ToInt32("A", 16);
16进制的A转成10进制,则是10
或
i = Convert.ToInt32("0xA", 16);
或
i = int.Parse(Convert.ToString(0xA, 10));
小例子1 设置和获取序列号
在进行网络通信过程中,通常都是把数据转成byte类型进行传输
比如上位机与下位机之间的网络通信
设置下位机序列号时,上位机把序列号转成byte[]作为指令参数发送给下位机
获取下位机序列号时,上位机发送指令,获取结果,将byte[] 转为string
string 转 byte[]
string sn = "1001AAA8801";
byte[] bSn = Encoding.Default.GetBytes(sn);
byte[] 转 string
string reslutSn = Encoding.Default.GetString(bSn);
小例子2 设置和获取MAC地址
设置MAC地址
MAC地址的格式是AA-AA-AA-AA-AA-AA
Win+R 输入cmd 回车,输入getmac可以查看计算机的MAC地址
比如上位机软件设置下位机MAC地址
设置MAC地址过程,在文本框输入正确格式MAC地址后,需要将16进制转为10进制byte类型,作为指令参数发送到下位机
string mac = "AA-AA-AA-AA-AA-AA";
string[] macs = mac.Split('-');
byte[] bMac = new byte[6];
for (int j = 0; j < macs.Length; j++)
{
bMac[j] = (byte)Convert.ToInt32(macs[j], 16);
}
转成byte[] 即可作为指令参数发送到下位机
获取MAC地址
同样的,从下位机获取MAC,从下位机获取的数据也是byte类型的,需要将byte转为16进制
string reslutMac = "";
for (int j = 0; j < bMac.Length; j++)
{
reslutMac += Convert.ToString((int)bMac[j], 16);
if (j != bMac.Length - 1) reslutMac += "-";
}
reslutMac = reslutMac.ToUpper();