1、字符串过滤 or 提取字符串
提取字符串:在C# .net开发中 “ToString()”方法是最常见的,用于将文本转为字符串;
字符串过滤:在处理字符串数据或者hex数据时,一般都需要去掉 空格 数组标识0x 标点符号 等等字符,方便后续进一步处理;
//将文本转为字符串
{
...
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命名空间下;
//str为输入字符串
byte[] bytes = Encoding.Default.GetBytes(str);
同样的,字节数组转字符串;
//bytes为输入字节数组
string str = Encoding.Default.GetString(bytes);
3、16进制数组与16进制字符串互转
16进制数组无法直接打印和显示(否则会出现乱码),这就需要转成对应的字符串;
//利用for循环将16进制数组转成对应的16进制字符串
//如 0x7E,0x5D,0x5A => "7E5D5A"
string strTemp = "";
for (int i = 0; i < bytes.Length; i++)
{
strTemp += bytes[i].ToString("X2");
strTemp += " ";
}
一般对于嵌入式硬件底层,收到的数据都是字节流,不需要转换,可以直接处理;
但是对于PC、Android等非底层驱动,拿到的数据都是字符串形式,这就需要将16进制字符串转16进制数组;
//str为过滤之后的字符串,只包含字母和数字
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进制数组转为字符串;文章来源:https://www.toymoban.com/news/detail-404912.html
5、其它常见转换操作
5.1 字符串替换
小节1中介绍了正则匹配来过滤字符串的方法,string类本身也有很多方法实现过滤和替换文章来源地址https://www.toymoban.com/news/detail-404912.html
//去掉字符串中的控制字符
string str2 = str1.Replace(" ", "").Replace(",", "").Replace("\t", "").Replace("\n", "").Replace("\r", "");
5.2 格式转换
//Encoding为编码格式转换
//Convert为数据格式转换
//常见的转换有
Convert.ToByte();
Convert.ToUInt16();
Convert.ToUInt32();
Convert.ToUInt64();
Convert.ToDateTime();
Convert.ToString();
Convert.ToBase64String();
到了这里,关于C# 数据互转 16进制&16进制字符串&字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!