C#关于String类型的十六进制与十进制二进制之间的转换


前言

串口通信中,接收转换的消息经常是string类型的十六进制数据,所以需要处理成十进制或二进制数据进行运算,目前项目中使用到相关的计算,所以自己查询记录下相关的使用方式。


一、字符串十六进制转十进制

示例:接收到的数据为str,可以根据十六进制值的大小选择以下方式进行存储。

		string str = "FF";
        byte b = byte.Parse(str,System.Globalization.NumberStyles.HexNumber);
        short s = short.Parse(str, System.Globalization.NumberStyles.HexNumber);
        int i = int.Parse(str,System.Globalization.NumberStyles.HexNumber);

		int a = 177;
		a.ToString("X2")

二、十进制转二进制

   // 定义int和short类型的值
        int intValue = 12345;
        short shortValue = 123;

       // 将int类型的值转换为二进制字符串
        string intBinary = Convert.ToString(intValue, 2);
        // 空位补0
        string intBinaryPadded = intBinary.PadLeft(32, '0');

       // 将short类型的值转换为二进制字符串
       string shortBinary = Convert.ToString(shortValue, 2);
       // 空位补0        
       string shortBinaryPadded = shortBinary.PadLeft(16, '0');

	//其他方法
	//十进制转二进制
	Console.WriteLine(Convert.ToString(69, 2));
	//十进制转八进制
	Console.WriteLine(Convert.ToString(69, 8));
	//十进制转十六进制
	Console.WriteLine(Convert.ToString(69, 16));

	//二进制转十进制
	Console.WriteLine(Convert.ToInt32(100111101, 2));
	//八进制转十进制
	Console.WriteLine(Convert.ToInt32(76, 8));
	//十六进制转十进制
	Console.WriteLine(Convert.ToInt32(”FF”, 16));


三、十六进制转浮点类型

 private double HexToDouble(string _data)
    {
        MatchCollection matches = Regex.Matches(_data, @"[0-9A-Fa-f]{2}");
        byte[] bytes = new byte[matches.Count];
        for (int i = 0; i < bytes.Length; i++)
            bytes[i] = byte.Parse(matches[i].Value, System.Globalization.NumberStyles.AllowHexSpecifier);
        double m = System.BitConverter.ToDouble(bytes, 0);

        return m;
    }
    private float HexToFloat(string _data)
    {
        MatchCollection matches = Regex.Matches(_data, @"[0-9A-Fa-f]{2}");
        byte[] bytes = new byte[matches.Count];
        for (int i = 0; i < bytes.Length; i++)
            bytes[i] = byte.Parse(matches[i].Value, System.Globalization.NumberStyles.AllowHexSpecifier);
        float m = System.BitConverter.ToSingle(bytes, 0);
        return m;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值