一、字符串转换为16进制字节数组的步骤
1、将字符串按每两个字符拆分并插入逗号为分隔符;
2、将拆分后的字符串分离为字符串数组;
3、将字符串数组转换成字节数组并检测字符是否合法;
4、将合法转换后的字节数组输出;
二、将16进制数字节数组转换为字符串
1、确定是否需要在字节之间插入空格或其他特殊符号;
2、将字节数据转换为字符;
3、将转换后的字符串连接起来;
4、将连接后的字符串输出;
三、代码
//字符串转换为16进制字节数组
private byte[] TranslateStringToHexArray(string AsciiString)
{
int cnt = 0;
string inputAsciiArray= "";
//1、将字符串按每两个字符拆分并插入逗号为分隔符
for (int i = 0; i < AsciiString.Length; i++)
{
char temp = AsciiString[i];
if(temp!=' ')
{
inputAsciiArray += temp;
cnt++;
if (cnt >= 2)
{
cnt = 0;
inputAsciiArray += ",";
}
}
}
//2、将拆分后的字符串分离为字符串数组
string[] bStringArray = inputAsciiArray.Split(new char[] { ',', ' ' });
cnt=0;
for (int i = 0; i < bStringArray.Length; i++)
{
if (bStringArray[i].Trim() != "") cnt++;
}
byte[] bArray1=new byte[cnt];
cnt = 0;
//3、将字符串数组转换成字节数组并检测字符是否合法
for (int i = 0; i < bStringArray.Length; i++)
{
if (bStringArray[i].Trim() != "")
{
try
{
bArray1[i] = Convert.ToByte(bStringArray[i].Trim(), 16);
cnt++;
}
catch (Exception E) //发生错误时提示非法字符
{
//string ErrMsg = " " + bStringArray[i] + " " + E.Message;
string ErrMsg = " 第 " +(i*2+1).ToString() + " 个字符 "+ bStringArray[i] +" 非法 \r\n" + E.ToString();
MessageBox.Show(ErrMsg, "提示");
break;
}
}
}
//4、将合法转换后的字节数组输出
byte[] bArray2 = new byte[cnt];
for (int i = 0; i < cnt; i++)
{
bArray2[i]=bArray1[i];
}
return bArray2;
}
//字节数组转换为字符串
private string TranslateHexArrayToString(byte[] InputByteArray,bool AddBlankFlag)
{
string HexString = "";
if (AddBlankFlag == true) //确定是否需要插入特殊符号
{
for (int i = 0; i < InputByteArray.Length; i++)
{
HexString += InputByteArray[i].ToString("X2")+ " "; //字节数据转换为字符(并插入空格)
}
}
else //字符串终字节间不插入空格
{
for (int i = 0; i < InputByteArray.Length; i++)
{
HexString += InputByteArray[i].ToString("X2"); //字节数据转换为字符
}
}
return HexString;
}






