字符串/16进制/ASCII码的转换
1 /// <字符串转16进制格式,不够自动前面补零> 2 /// 假设文本框里面填写的是:01 02 03 04 05 06 3 /// Str获取的是01 02 03 04 05 06 是字符串 4 /// 需要将01转为0x01,02转为0x02 5 /// 首先默认把文本框每隔两个字符作为一个16进制数 6 /// 假设文本框中是010203040506(偶数个数据),则01,02,03,04,05,06分别作为16进制 7 /// 如果文本框中的字符个数是奇数个1115268,则默认先把前面每隔两个作为一个16进制数,最后一个数前面补零0x11,0x15,0x26,0x08 8 /// </summary> 9 /// <param name="hexString"></param> 10 /// <returns>返回字符数组</returns> 11 public static byte[] strToToHexByte(String hexString) { 12 int i; 13 hexString = hexString.Replace(" ", "");//清除空格 14 if ((hexString.Length % 2) != 0)//奇数个 15 { 16 byte[] returnBytes = new byte[(hexString.Length + 1) / 2]; 17 try { 18 for (i = 0; i < (hexString.Length - 1) / 2; i++) { 19 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); 20 } 21 returnBytes[returnBytes.Length - 1] = Convert.ToByte(hexString.Substring(hexString.Length - 1, 1).PadLeft(2, '0'), 16); 22 } catch { 23 MessageBox.Show("含有非16进制字符", "提示"); 24 return null; 25 } 26 return returnBytes; 27 } else { 28 byte[] returnBytes = new byte[(hexString.Length) / 2]; 29 try { 30 for (i = 0; i < returnBytes.Length; i++) { 31 returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); 32 } 33 } catch { 34 MessageBox.Show("含有非16进制字符", "提示"); 35 return null; 36 } 37 return returnBytes; 38 } 39 } 40 /// <summary> 41 /// 将字符串s通过ASCII码转换为16进制字符串 42 /// </summary> 43 /// <param name="s"></param> 44 /// <param name="encode"></param> 45 /// <returns>十六进制字符串</returns> 46 private static string result;//string转16进制的结果 47 public static string stringToHexString(string s, Encoding encode) { 48 byte[] b = encode.GetBytes(s);//按照指定编码将string编程字节数组 49 result = string.Empty; 50 for (int i = 0; i < b.Length; i++)//逐字节变为16进制字符 51 { 52 result += Convert.ToString(b[i], 16); 53 } 54 return result; 55 } 56 57 /// <summary> 58 /// 将一条十六进制字符串转换为ASCII 59 /// </summary> 60 /// <param name="hexstring">一条十六进制字符串</param> 61 /// <returns>返回一条ASCII码</returns> 62 public static string hexStringToASCII(string hexstring) { 63 byte[] bt = hexStringToBinary(hexstring); 64 string lin = ""; 65 for (int i = 0; i < bt.Length; i++) { 66 lin = lin + bt[i] + " "; 67 } 68 string[] ss = lin.Trim().Split(new char[] { ' ' }); 69 char[] c = new char[ss.Length]; 70 int a; 71 for (int i = 0; i < c.Length; i++) { 72 a = Convert.ToInt32(ss[i]); 73 c[i] = Convert.ToChar(a); 74 } 75 string b = new string(c); 76 return b; 77 } 78 /// <summary> 79 /// 16进制字符串转换为二进制数组 80 /// </summary> 81 /// <param name="hexstring">用空格切割字符串</param> 82 /// <returns>返回一个二进制字符串</returns> 83 public static byte[] hexStringToBinary(string hexstring) { 84 string[] tmpary = hexstring.Trim().Split(' '); 85 byte[] buff = new byte[tmpary.Length]; 86 for (int i = 0; i < buff.Length; i++) { 87 buff[i] = Convert.ToByte(tmpary[i], 16); 88 } 89 return buff; 90 }
分类:
C#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理