1 /// <summary> 2 /// 十六进制转成字节 3 /// </summary> 4 /// <param name="aHex"></param> 5 /// <returns></returns> 6 public string HexToBytes(string aHex) 7 { 8 aHex = aHex.ToUpper(); 9 int len = aHex.Length; 10 string ss = ""; 11 string sss = ""; 12 for (int i = 1; i <= len; i++) 13 { 14 string s = ""; 15 s = aHex.Substring(i - 1, 1); 16 switch (s) 17 { 18 case "0": 19 ss = "0000"; 20 break; 21 case "1": 22 ss = "0001"; 23 break; 24 case "2": 25 ss = "0010"; 26 break; 27 case "3": 28 ss = "0011"; 29 break; 30 case "4": 31 ss = "0100"; 32 break; 33 case "5": 34 ss = "0101"; 35 break; 36 case "6": 37 ss = "0110"; 38 break; 39 case "7": 40 ss = "0111"; 41 break; 42 case "8": 43 ss = "1000"; 44 break; 45 case "9": 46 ss = "1001"; 47 break; 48 case "A": 49 ss = "1010"; 50 break; 51 case "B": 52 ss = "1011"; 53 break; 54 case "C": 55 ss = "1100"; 56 break; 57 case "D": 58 ss = "1101"; 59 break; 60 case "E": 61 ss = "1110"; 62 break; 63 case "F": 64 ss = "1111"; 65 break; 66 default: 67 68 break; 69 70 } 71 sss += ss; 72 } 73 return sss; 74 } 75 /// <summary> 76 /// 汉字转国标码 77 /// </summary> 78 /// <param name="hz"></param> 79 /// <returns></returns> 80 public string Hz2ASC(string hz) 81 { 82 string st = string.Empty; 83 byte[] array = System.Text.Encoding.Default.GetBytes(hz); 84 for (int i = 0; i < array.Length; i++) 85 { 86 st += array[i].ToString("X2"); 87 } 88 return st; 89 } 90 /// <summary> 91 /// 国标码转汉字 92 /// </summary> 93 /// <param name="asc"></param> 94 /// <returns></returns> 95 public string ASC2Hz(string asc) 96 { 97 string st = string.Empty; 98 byte[] array = new byte[asc.Length / 2]; 99 for (int i = 0; i < array.Length; i++) 100 array[i] = Convert.ToByte(asc.Substring(i * 2, 2).Trim(), 16); 101 for (int i = 0; i < array.Length; i++) 102 { 103 if (array[i] >= 161 && array[i] <= 247) 104 { 105 st = st + System.Text.Encoding.Default.GetString(array, i, 2); 106 i++; 107 } 108 else 109 { 110 st = st + System.Text.Encoding.Default.GetString(array, i, 1); 111 } 112 } 113 return st; 114 } 115 /// <summary> 116 /// 从字符串头位置取指定长度的字符串, 117 /// 并从源字符串删除取出的字符串 118 /// </summary> 119 /// <param name="str">源字符串</param> 120 /// <param name="getLen">要取的长度</param> 121 /// <returns>返回取出的字符串</returns> 122 public string getString(ref string str, int getLen) 123 { 124 string backStr = ""; 125 try 126 { 127 if ((!str.Equals("")) && (str.Length >= getLen)) 128 { 129 backStr = str.Substring(0, getLen); 130 str = str.Substring(getLen); 131 } 132 } 133 catch { } 134 return backStr; 135 } 136 /// <summary> 137 /// 从字符串右边位置取指定长度的字符串, 138 /// 并从源字符串删除取出的字符串 139 /// </summary> 140 /// <param name="str"></param> 141 /// <param name="getLen"></param> 142 /// <returns></returns> 143 public string getStringR(ref string str, int getLen) 144 { 145 string backStr = ""; 146 try 147 { 148 if ((!str.Equals("")) && (str.Length >= getLen)) 149 { 150 backStr = str.Substring(str.Length - getLen); 151 str = str.Substring(0, str.Length - getLen); 152 } 153 } 154 catch { } 155 return backStr; 156 } 157 158 /// <summary> 159 /// 十六进制转换成十进制 160 /// </summary> 161 /// <param name="hexStr">十六进制字符串</param> 162 /// <returns>十进制数</returns> 163 public int Hex2Int(string hexStr) 164 { 165 int intValue; 166 try 167 { 168 intValue = int.Parse(hexStr, System.Globalization.NumberStyles.HexNumber); 169 } 170 catch 171 { 172 intValue = 0; 173 } 174 return intValue; 175 } 176 /// <summary> 177 /// 字符串(必须是BCD码串)转十六进制(返回结果高端在前) 178 /// </summary> 179 /// <param name="str">字串</param> 180 /// <param name="len">转换后长度,为字符长度</param> 181 /// <returns></returns> 182 public string Str2Hex(string str, int len) 183 { 184 string hex = ""; 185 try 186 { 187 int strInt = Convert.ToInt32(str); 188 hex = strInt.ToString("X" + len); 189 } 190 catch 191 { 192 for (int i = 0; i < len; i++) hex += "0"; 193 } 194 return hex; 195 } 196 /// <summary> 197 /// 字符串(必须是BCD码串)转十六进制(返回结果低端在前) 198 /// </summary> 199 /// <param name="str">字串</param> 200 /// <param name="len">转换后长度,为字符长度</param> 201 /// <returns></returns> 202 public string Str2HexLow(string str, int len) 203 { 204 string hex = ""; 205 try 206 { 207 int strInt = Convert.ToInt32(str); 208 hex = strInt.ToString("X" + len); 209 //颠倒一下 210 string temp=""; 211 for (int i = 0; i < hex.Length / 2; i++) 212 { 213 temp += hex.Substring(hex.Length - (2 * i + 2), 2); 214 } 215 hex = temp; 216 } 217 catch 218 { 219 for (int i = 0; i < len; i++) hex += "0"; 220 } 221 return hex; 222 } 223 /// <summary> 224 /// string类型的ASCII字符转换为string类型的十六进制(如“AB426EPC11”-> “41423432364550433131”) 225 /// 注意是大写的 226 /// </summary> 227 /// <param name="StringASCII">要转换的ASCII字符</param> 228 /// <returns></returns> 229 public string ASCII2string(string StringASCII) 230 { 231 string Data = StringASCII; 232 int i; 233 int intData; 234 string hexData; 235 string changeData = ""; 236 237 for (i = 0; i < Data.Length; i++) 238 { 239 string stringData = Data.Substring(i, 1).ToUpper(); 240 char charData = Convert.ToChar(stringData); 241 intData = Convert.ToInt32(charData); 242 hexData = intData.ToString("X"); 243 changeData += hexData; 244 } 245 return changeData; 246 } 247 /// <summary> 248 /// string类型的ASCII字符转换为string类型的十六进制(如“AB426EPC11”-> “41423432364550433131”) 249 /// 注意是小写的 250 /// </summary> 251 /// <param name="StringASCII">要转换的ASCII字符</param> 252 /// <returns></returns> 253 public string ASCII2stringLower(string StringASCII) 254 { 255 string Data = StringASCII; 256 int i; 257 int intData; 258 string hexData; 259 string changeData = ""; 260 261 for (i = 0; i < Data.Length; i++) 262 { 263 string stringData = Data.Substring(i, 1).ToLower(); 264 char charData = Convert.ToChar(stringData); 265 intData = Convert.ToInt32(charData); 266 hexData = intData.ToString("X"); 267 changeData += hexData; 268 } 269 return changeData; 270 } 271 /// <summary> 272 /// string类型的ASCII字符转换为string类型的十六进制(如“AB426EPC11”-> “41423432364550433131”) 273 /// 注意是区分大小写的 274 /// </summary> 275 /// <param name="StringASCII">要转换的ASCII字符</param> 276 /// <returns></returns> 277 public string ASCII2stringCase(string StringASCII) 278 { 279 string Data = StringASCII; 280 int i; 281 int intData; 282 string hexData; 283 string changeData = ""; 284 285 for (i = 0; i < Data.Length; i++) 286 { 287 string stringData = Data.Substring(i, 1); 288 char charData = Convert.ToChar(stringData); 289 intData = Convert.ToInt32(charData); 290 hexData = intData.ToString("X"); 291 changeData += hexData; 292 } 293 return changeData; 294 } 295 /// <summary> 296 /// string类型的HEX转换为string类型的ASCII字符(如“41423432364550433131”-> “AB426EPC11”) 297 /// </summary> 298 /// <param name="stringhex">要转换的string类型的HEX</param> 299 /// <returns>ASCII字符</returns> 300 public string string2ASCII(string stringhex) 301 { 302 string changeData = ""; 303 try 304 { 305 string hexData = stringhex; 306 int i; 307 char stringData; 308 int intData; 309 310 311 for (i = 0; i < hexData.Length; i = i + 2) 312 { 313 string tempData = hexData.Substring(i, 2); 314 intData = Convert.ToInt32(tempData, 16); 315 stringData = (char)intData; 316 changeData += stringData.ToString(); 317 } 318 return changeData; 319 } 320 catch (Exception e) 321 { 322 return changeData = e.Message; 323 } 324 } 325 /// <summary> 326 /// BCD转成固定长度的String 327 /// </summary> 328 /// <param name="str"></param> 329 /// <param name="len"></param> 330 /// <returns></returns> 331 public string BCD2String(string str, int len) 332 { 333 int ll = str.Length; 334 for (int i = 0; i < len - ll; i++) 335 { 336 str = "0" + str; 337 } 338 return str.Substring(0, len); 339 }