c语言字符串转十六进制算法(VS2012C)
#编程基础##我要上#
一、字符串转换为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;
}
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com