关于物联网的各种转换,16进制 二进制 10进制 效验总结

字符串插入字符
 

 /// <summary>
        /// 每隔n个字符插入一个字符
        /// </summary>
        /// <param name="input">源字符串</param>
        /// <param name="interval">间隔字符数</param>
        /// <param name="value">待插入值</param>
        /// <returns>返回新生成字符串</returns>
        public static string InsertFormat(string input, int interval, string value)
        {
            for (int i = interval; i < input.Length; i += interval + 1)
                input = input.Insert(i, value);
            return input;
        }

10进制转16进制
 

 static public string Get16string(string num)
        {
            int i = int.Parse(num);
            if (i > 9)
            {
                num = Convert.ToString(i, 16);
                if (num.Length % 2 != 0)
                {
                    num = "0" + num;
                }
            }
            else
            {
                num = "0" + num;
            }
            return num;
        }

上面这个方法,只会补一个0,
假如你输入的是一个1,返回的就是01,但是你想要的是:0001,可以在输出之后使用这个方法

static public string Get16_4wei_String(string num)
        {
            Int64 i = Int64.Parse(num);
            return i.ToString("X4").ToUpper();
        }

这样你就可以得到 4位的 16进制,:0001,会自动进行补0 

16进制转10进制

static  public string Get10string(string num)
        {
            int RtnMsg10 = int.Parse(num.Replace(" ", ""), System.Globalization.NumberStyles.HexNumber);
            return RtnMsg10.ToString();
        }

16进制转2进制
 

 //输出二进制,每4个就会有一个空格
        public static string HexString2BinString(string hexString)
        {
            try
            {
                string result = string.Empty;
                foreach (char c in hexString)
                {
                    int v = Convert.ToInt32(c.ToString(), 16);
                    int v2 = int.Parse(Convert.ToString(v, 2));
                    // 去掉格式串中的空格,即可去掉每个4位二进制数之间的空格,
                    result += string.Format("{0:d4} ", v2);
                }
                return result;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                throw;
            }

        }

倒叙输出二进制

 static public string DaoXuData(string data)
        {
            // 0001 1110  
            // 0000 0000 
            int iData = data.Length - 1;
            string NewData = "";
            for (int i = iData; i > -1; i--)
            {
                NewData += data[i].ToString();
            }
            return NewData;
        }

16进制转ASCII

 public static string HexStringToASCII(string hexstring)
        {
            byte[] bt = strToToHexByte(hexstring);
            string lin = "";
            for (int i = 0; i < bt.Length; i++)
            {
                lin = lin + bt[i] + " ";
            }


            string[] ss = lin.Trim().Split(new char[] { ' ' });
            char[] c = new char[ss.Length];
            int a;
            for (int i = 0; i < c.Length; i++)
            {
                a = Convert.ToInt32(ss[i]);
                c[i] = Convert.ToChar(a);
            }

            string b = new string(c);
            return b;
        }

16进制转Byte[]
 

#region 字符串转16进制,返回Byte[]
        static public byte[] strToToHexByte(String hexString)
        {
            hexString = hexString.Replace(" ", "");

            if ((hexString.Length % 2) != 0)

                hexString += " ";

            byte[] returnBytes = new byte[hexString.Length / 2];

            for (int i = 0; i < returnBytes.Length; i++)

                returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16); return returnBytes;
        }
        #endregion

暂时先这样,以后有的话,继续进行更新

继续更新

IEEE754单精度(32位)  16进制转 float 

static public float IEEE754ToFloat(string hex)
 {
            string value = hex.Replace(" ", "");//16进制字符串

            UInt32 x = Convert.ToUInt32(value, 16);//字符串转16进制32位无符号整数

            float fy = BitConverter.ToSingle(BitConverter.GetBytes(x), 0);//IEEE754 字节转换
            return fy;
}

继续更新

16进制转IEEE754双精度 float64


        static public double IEEE754ToDoubleFloat(string hex)
        {
            string value = hex.Replace(" ", "");//16进制字符串

            UInt64 x = Convert.ToUInt64(value, 16);//字符串转16进制32位无符号整数


            double fy = BitConverter.ToDouble(BitConverter.GetBytes(x), 0);//IEEE754 字节转换float
            return fy;
        }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值