C# 字符串转二进制 十进制转二进制 十六进制转二进制 补位
最近项目的协议需要根据传过来的十六进制字符串转换成二进制来判断设备状态。
例如:
"00" => 00
表示设备1关、设备2关
“01” => 01
表示设备1关、设备2开
“02” => 10
表示设备1开、设备2关
"03" => 11
表示设备1开、设备2开
但是通过下面语句进行转换就会丢失开头的0。
string temp = "02"; int decimalism = Convert.ToInt32(temp);
所以转换二进制需要进行补位操作。如下:
字符串转二级制补位问题
string temp = "02"; int decimalism = Convert.ToInt32(temp); string binary = Convert.ToString(x, 2).PadLeft(2, '0'); System.Console.WriteLine(binary); System.Console.WriteLine(binary[0]); System.Console.WriteLine(binary[1]);
控制台输出
01 0 1
当我用到ASP.NET程序中是,还是存在问题,获取的0和1是对应的ASCII码。
string temp = "02"; int decimalism = Convert.ToInt32(temp); string binary = Convert.ToString(x, 2).PadLeft(2, '0'); int device0Status = binary[0] // 48 int device1Status = binary[1] // 49
因为binary[0]
获取到的是char
类型,所以我们需要把char
类型转成string
类型,再转成int
。
string temp = "02"; int decimalism = Convert.ToInt32(temp); string binary = Convert.ToString(x, 2).PadLeft(2, '0'); int device0Status = Convert.ToInt32(binary[0].ToString()) // 0 int device1Status = Convert.ToInt32(binary[0].ToString()) // 1
这样问题就解决了。
C# | PadLeft方法
在c#中,PadLeft()是一个字符串方法。此方法用于对String中的字符进行右对齐,方法是在字符串左侧填充空格或指定字符,以达到指定的总长度。可以通过向该方法传递不同的参数来重载该方法。
- String.PadLeft Method(Int32)
- String.PadLeft Method(Int32, Char)
语法:
/// <sumary> /// 自动右补全 /// </sumary> /// <param name="totalWidth">补全的长度</parm> /// <param name="paddingChar">补全的字符</parm> public string PadLeft(int totalWidth, char paddingChar)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构