转换进制方法一
一、十进制转换为十六进制
1 2
| int a = 654; string A = a.ToString("X6");
|
上面Tostring(“X6”)是将整型a转化成16进制数;
其中:
(1) “x”小写输出十六进制的的字母为小写字母,”X”大写则输出的十六进制字母为大写;
(2) 后面的数字6是表示自动补0补足6位;
二、十六进制转为十进制
1
| var a = Convert.ToInt64(A, 16);
|
将十六进制数A转化为整型a
其中:
(1)var关键字:匿名类型,可以代替任何类型
(2) ToInt64(String value,Int frombase)是Convert里面的一个方法,是将制定技术的数字的字符串表示形式转换为等效的64位有符号整数,Value是需要转化的字符串,frombase是数字基数,即2,8,10,16,这里是将16进制转化,所以是16
将整数转换为十六进制
将整数转换为十六进制
可以使用string.ToString()扩展方法将整数转换为十六进制。
1 2
| Integer Value: 500 Hexadecimal Value: 1F4
|
将十六进制转换为整数-
可以使用int.Parse或convert.ToInt32将十六进制值转换为整数
**int.Parse-**将数字的字符串表示形式转换为其等效的32位有符号整数。返回值指示操作是否成功。
1 2
| Hexadecimal Value: 1F4 Integer Value: 500
|
**Convert.ToInt32-**将指定的值转换为32位带符号整数。
1 2
| Hexadecimal Value: 1F4 Integer Value: 500
|
将整数转换为十六进制-
字符串hexValue = integerValue.ToString(“ X”);
示例
1 2 3 4 5 6 7 8 9 10 11 12
| using System; namespace DemoApplication{ public class Program{ public static void Main(){ int integerValue = 500; Console.WriteLine($"Integer Value: {integerValue}"); string hexValue = integerValue.ToString("X"); Console.WriteLine($"Hexadecimal Value: {hexValue}"); Console.ReadLine(); } } }
|
输出结果
上面代码的输出是
1 2
| Integer Value: 500 Hexadecimal Value: 1F4
|
将十六进制转换为整数-
使用int.Parse的示例-
示例
1 2 3 4 5 6 7 8 9 10 11 12
| using System; namespace DemoApplication{ public class Program{ public static void Main(){ string hexValue = "1F4"; Console.WriteLine($"Hexadecimal Value: {hexValue}"); int integerValue = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber); Console.WriteLine($"Integer Value: {integerValue}"); Console.ReadLine(); } } }
|
输出结果
上面代码的输出是
1 2
| Hexadecimal Value: 1F4 Integer Value: 500
|
使用Convert.ToInt32的示例-
示例
1 2 3 4 5 6 7 8 9 10 11 12
| using System; namespace DemoApplication{ public class Program{ public static void Main(){ string hexValue = "1F4"; Console.WriteLine($"Hexadecimal Value: {hexValue}"); int integerValue = Convert.ToInt32(hexValue, 16); Console.WriteLine($"Integer Value: {integerValue}"); Console.ReadLine(); } } }
|
输出结果
上面代码的输出是
1 2
| Hexadecimal Value: 1F4 Integer Value: 500
|
数据互转 16进制&16进制字符串&字符串
1、字符串过滤 or 提取字符串
提取字符串:在C# .net开发中 “ToString()”方法是最常见的,用于将文本转为字符串;
字符串过滤:在处理字符串数据或者hex数据时,一般都需要去掉 空格 数组标识0x 标点符号 等等字符,方便后续进一步处理;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| { ... string str = textBox1.Text.ToString(); ... }
{ string pattern = "[A-Za-z0-9]"; string strRet = ""; MatchCollection results = Regex.Matches(ReadString(), pattern); foreach (var v in results) { strRet += v.ToString(); } return strRet.Replace("0x", ""); }
|
2、字符串与16进制数组互转
从字符串转16进制数组,字符串的每一个字符就是一个byte;
可以用Encoding类的方法完成格式转换,Encoding位于System.Text命名空间下;
1 2
| byte[] bytes = Encoding.Default.GetBytes(str);
|
同样的,字节数组转字符串;
1 2
| string str = Encoding.Default.GetString(bytes);
|
3、16进制数组与16进制字符串互转
- 16进制数组无法直接打印和显示(否则会出现乱码),这就需要转成对应的字符串;
1 2 3 4 5 6 7 8 9 10 11
|
string strTemp = ""; for (int i = 0; i < bytes.Length; i++) { strTemp += bytes[i].ToString("X2"); strTemp += " "; }
|
一般对于嵌入式硬件底层,收到的数据都是字节流,不需要转换,可以直接处理;
但是对于PC、Android等非底层驱动,拿到的数据都是字符串形式,这就需要将16进制字符串转16进制数组;
1 2 3 4 5 6 7 8 9 10
|
string strTemp = ""; for (int i = 0; i < str.Length/2; i++) { strTemp += str.Substring(2 * i, 2); strTemp += " "; }
|
4、字符串与16进制字符串
二者互转又多了一层。
字符串转16进制字符串:先将字符串转为16进制数组,再将16进制数组转为16进制字符串;
16进制字符串转字符串:先将16进制字符串转为16进制数组,再将16进制数组转为字符串;
5、其它常见转换操作
5.1 字符串替换
小节1中介绍了正则匹配来过滤字符串的方法,string类本身也有很多方法实现过滤和替换
1 2
| string str2 = str1.Replace(" ", "").Replace(",", "").Replace("\t", "").Replace("\n", "").Replace("\r", "");
|
5.2 格式转换
1 2 3 4 5 6 7 8 9 10 11 12
|
Convert.ToByte(); Convert.ToUInt16(); Convert.ToUInt32(); Convert.ToUInt64(); Convert.ToDateTime(); Convert.ToString(); Convert.ToBase64String();
|
相关链接(侵删)
- C#中十进制与十六进制之间的转换
- 如何在C#中将整数转换为十六进制,反之亦然?
- C# 数据互转 16进制&16进制字符串&字符串
=================我是分割线=================
欢迎到公众号来唠嗑: