⽤C#实现⼗六进制字符串转换为ASCII 最近做串⼝通信,要⽤到⼗六进制批量转ASCII。⽹上了半天C#的代码,
只有单个转换的的,没到⾃⼰需要的代码。只好⾃⼰写⼀个了。
代码如下:
//触发事件
private void button1_Click(object sender,EventArgs e)
{
textBox2.Text= HexStringToASCII(textBox1.Text);
16进制字符串转16进制数组}
/// <summary>
/// 将⼀条⼗六进制字符串转换为ASCII
/// </summary>
/// <param name="hexstring">⼀条⼗六进制字符串</param>
/// <returns>返回⼀条ASCII码</returns>
public static string HexStringToASCII(string hexstring)
{
byte[] bt = HexStringToBinary(hexstring);
string lin = "";
for (int i = 0; i < bt.Length; i++)
{
lin = lin + bt[i] + " ";
}
string[] ss = lin.Trim().Split(new char[] { ' ' });
char[] c = new char[ss.Length];
int a;
for (int i = 0; i < c.Length; i++)
{
a = Convert.ToInt32(ss[i]);
c[i] = Convert.ToChar(a);
}
string b = new string(c);
return b;
}
/**/
/
// <summary>
/// 16进制字符串转换为⼆进制数组
/// </summary>
/// <param name="hexstring">⽤空格切割字符串</param>
/// <returns>返回⼀个⼆进制字符串</returns>
public static byte[] HexStringToBinary(string hexstring)
{
string[] tmpary = hexstring.Trim().Split(' ');
byte[] buff = new byte[tmpary.Length];
for (int i = 0; i < buff.Length; i++)
{
buff[i] = Convert.ToByte(tmpary[i], 16);
}
return buff;
}
⽐如输⼊:41 42 25
得到结果:AB%
总结:关于⼗六进制字符串转ASCII码,正常的话,⼏句代码就搞定。虽然并不复杂,但是其实代码还是挺多的,就是因为多了批量两个字。希望能帮到⼤家,也欢迎提出宝贵意见,以更优化代码。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。