【C#日常】常用字符串转16进制

推荐阅读

一、前言

在软硬件开发中,常常会遇到将字符串转16进制的需求,因为设备的中控码常见的就是Hex编码格式,也就是16进制,下面就来看下如何字符串如何转化16进制吧

二、字符串转16进制

/// <summary>
/// 字符串转16进制字符
/// </summary>
/// <param name="_str">字符串</param>
/// <param name="encode">编码格式</param>
/// <returns></returns>
private string StringToHexString(string _str,Encoding encode)
{
    //去掉空格
    _str = _str.Replace(" ", "");
    //将字符串转换成字节数组。
    byte[] buffer = encode.GetBytes(_str);
    //定义一个string类型的变量,用于存储转换后的值。
    string result = string.Empty;
    for (int i = 0; i < buffer.Length; i++)
    {
        //将每一个字节数组转换成16进制的字符串,以空格相隔开。
        result += Convert.ToString(buffer[i], 16);
    }
    return result;
}

三、16进制转字符串

/// <summary>
/// 16进制字符转字符串
/// </summary>
/// <param name="hex">16进制字符</param>
/// <param name="encode">编码格式</param>
/// <returns></returns>
private string HexStringToString(string hex,Encoding encode)
{
    byte[] buffer = new byte[hex.Length / 2];
    string result = string.Empty;
    for (int i = 0; i < hex.Length/2; i++)
    {
        result = hex.Substring(i * 2, 2);
        buffer[i] = Convert.ToByte(result, 16);
    }
    //返回指定编码格式的字符串
    return encode.GetString(buffer);
}

四、字符串转16进制优化版

在实际的开发中,往往会遇到字符串转成16进制也不管用的情况,可能是因为机器的Hex码已经是16进制的字符串了,再转化16进制也不对,就比如下面这个:

50H 57H 52H 20H 4FH 4EH 0DH
转化16进制:
353048203537482035324820323048203446482034454820304448

根本不对嘛,应该转成

0x50, 0x57, 0x52, 0x20, 0x4F, 0x4E, 0x0D

代码:

/// <summary>
/// 字符串转16进制字符2
/// </summary>
/// <param name="_str">字符串</param>
/// <param name="encode">编码格式</param>
/// <returns></returns>
private string StringToHexString2(string _str, Encoding encode)
{
    //去掉空格
    _str = _str.Replace(" ", "");
    string[] arr = _str.Split('H');
    //定义一个string类型的变量,用于存储转换后的值。
    string result = string.Empty;
    for (int i = 0; i < arr.Length; i++)
    {
        arr[i] = "0x"+arr[i].Substring(0, 2)+",";
        if (i == arr.Length -1)
        {
            arr[i] = "0x" + arr[i].Substring(0, 2);
        }
        result += arr[i];
    }
    return result;
}

当然实际格式要按照实际的情况分析,最主要的是将Hex中控码转成“0x”这种格式

恬静的小魔龙 CSDN认证博客专家 CSDN博客专家
博主从2017年9月开始在CSDN写博客,于2019年8月成为博客专家,比起那些4个月就成为博客专家的确实水平差了点,但是本来写博客也是为了对学习的东西的记录,慢慢的写出来的东西能帮助更多的人,也慢慢的提升了自己的水平。想起来一个例子:1.01^365=37.8,1.02^365=1377.4,每天进步一点点,一年后就差了几十倍的差距,加油吧少年。
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付 19.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值