3 internal static class Hex
5 private static char HexDigit(
int num)
7 return (
char)((num < 10) ? (num + 48) : (num + 55));
10 public static string EncodeHexString(
byte[] sArray)
15 char[] array =
new char[sArray.Length * 2];
18 for (; i < sArray.Length; i++)
20 int num2 = (sArray[i] & 0xF0) >> 4;
21 array[num++] = HexDigit(num2);
22 num2 = (sArray[i] & 0xF);
23 array[num++] = HexDigit(num2);
25 result =
new string(array);
30 internal static string EncodeHexStringFromInt(
byte[] sArray)
35 char[] array =
new char[sArray.Length * 2];
36 int num = sArray.Length;
40 int num4 = (sArray[num] & 0xF0) >> 4;
41 array[num2++] = HexDigit(num4);
42 num4 = (sArray[num] & 0xF);
43 array[num2++] = HexDigit(num4);
45 result =
new string(array);
50 public static int ConvertHexDigit(
char val)
52 if (val <= '9' && val >=
'0')
56 if (val >=
'a' && val <=
'f')
60 if (val >=
'A' && val <=
'F')
64 throw new ArgumentException(Environment.GetResourceString(
"ArgumentOutOfRange_Index"));
67 public static byte[] DecodeHexString(
string hexString)
69 if (hexString ==
null)
71 throw new ArgumentNullException(
"hexString");
75 int num2 = hexString.Length;
76 if (num2 >= 2 && hexString[0] ==
'0' && (hexString[1] ==
'x' || hexString[1] ==
'X'))
78 num2 = hexString.Length - 2;
81 if (num2 % 2 != 0 && num2 % 3 != 2)
83 throw new ArgumentException(Environment.GetResourceString(
"Argument_InvalidHexFormat"));
86 if (num2 >= 3 && hexString[num + 2] ==
' ')
89 array =
new byte[num2 / 3 + 1];
93 array =
new byte[num2 / 2];
96 while (num < hexString.Length)
98 int num4 = ConvertHexDigit(hexString[num]);
99 int num5 = ConvertHexDigit(hexString[num + 1]);
100 array[num3] = (byte)(num5 | (num4 << 4));