C# 数据互转 16进制&16进制字符串&字符串

文章详细介绍了在C#.net开发中如何进行字符串与16进制之间的转换,包括ToString()方法、字符串过滤、正则表达式去除特定字符,以及16进制数组与16进制字符串的互转。同时,提到了字符串替换和格式转换的相关函数,如Convert和Encoding类的方法。
摘要由CSDN通过智能技术生成

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进制数组转为字符串;

5、其它常见转换操作

5.1 字符串替换

小节1中介绍了正则匹配来过滤字符串的方法,string类本身也有很多方法实现过滤和替换

//去掉字符串中的控制字符
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();

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值