最近有一项目,遇到一个把数据通过UDP包传数据到某个客户端,并将这些传来的16进制字符转换为浮点型查阅了MSDN,MS的SDK真好,把这么复杂的问题通过简单的方式解决了。以下是转换的代码:
需要注意的是,IEEE标准的十六进制字符串是否是低位在前,转换时应注意颠倒。
Code
//将接收到的16进字符转换为10进制
byte[] byteArray = new byte[4];
byteArray[0] =(byte) Convert.ToInt16(Convert.ToString(data[i], 16),16);
byteArray[1] = (byte)Convert.ToInt16(Convert.ToString(data[i + 1], 16), 16);
byteArray[2] = (byte)Convert.ToInt16(Convert.ToString(data[i + 2], 16), 16);
byteArray[3] = (byte)Convert.ToInt16(Convert.ToString(data[i + 3], 16), 16);
//通过byte数组将转换为符合IEEE标准的4位浮点型数值。
string sisData = BitConverter.ToSingle(byteArray, 0).ToString();