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; }

c语言字符串转十六进制算法(VS2012C)(1)

c语言字符串转十六进制算法(VS2012C)(2)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页