/// <summary>
/// 16进制转字符
/// </summary>
/// <param name="str1"></param>
/// <returns></returns>
public string HexToStr(string str1)
{
string returnValue = ""; if (str1 == "")
return ""; byte[] w = new byte[str1.Length / 2]; for (int i = 0; i < str1.Length; i++)
{
w[i] = HexToStr(str1, i + 1);
} returnValue = System.Text.Encoding.Default.GetString(w);
return returnValue;
}
/// <summary>
/// 16进制转字符
/// </summary>
/// <param name="str1"></param>
/// <param name="spage"></param>
/// <returns></returns>
byte HexToStr(string str1, int spage)
{
string returnValue;
int intTemp;
int ipage = Convert.ToInt32(spage);
int StartInt = 0;
int iLengthInt = 2; intTemp = str1.Length;//取得字符串长度 if (ipage == 1)
{
StartInt = 0;
iLengthInt = 2;
}
else
{
StartInt = (ipage - 1) * iLengthInt; if ((intTemp - ipage * 2) < 2)
{
iLengthInt = intTemp - (ipage - 1) * 2;
}
else
{
iLengthInt = 2;
}
} returnValue = str1.Substring(StartInt, iLengthInt); returnValue = ConvertString(returnValue, 16, 10); return Convert.ToByte(returnValue);
} /// <summary>
/// ConvertString(值,來源进制,目的进制);
/// </summary>
/// <param name="value"></param>
/// <param name="fromBase"></param>
/// <param name="toBase"></param>
/// <returns></returns>
string ConvertString(string value, int fromBase, int toBase)
{
int intValue = Convert.ToInt32(value, fromBase);
return Convert.ToString(intValue, toBase);
}
-----------------------------
方法二:
/// <summary>
/// 将指定的十六进制字符串转化为普通字符串
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
private string HexStrToStr(string text)
{
string result = "";
byte[] bytes = new byte[text.Length / 2];
int i = 0, r = 0;
while (i < text.Length)
{
bytes[r] = byte.Parse(text.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
i += 2;
r++;
}
result = Encoding.GetEncoding("GB2312").GetString(bytes);
return result;
} /// <summary>
/// 将指定的字符串转化为16进制的字符串
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
private string StrToHexStr(string text)
{
string result = "";
byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(text);
foreach (byte byt in bytes)
{
result += Convert.ToString((short)byt, 16);
}
return result;
}
这两个方法怎么都有问题啊,不能转换???
需要转换的串是:D4DDCDA3B4FACAD5B7D1D2B5CEF1
/// 16进制转字符
/// </summary>
/// <param name="str1"></param>
/// <returns></returns>
public string HexToStr(string str1)
{
string returnValue = ""; if (str1 == "")
return ""; byte[] w = new byte[str1.Length / 2]; for (int i = 0; i < str1.Length; i++)
{
w[i] = HexToStr(str1, i + 1);
} returnValue = System.Text.Encoding.Default.GetString(w);
return returnValue;
}
/// <summary>
/// 16进制转字符
/// </summary>
/// <param name="str1"></param>
/// <param name="spage"></param>
/// <returns></returns>
byte HexToStr(string str1, int spage)
{
string returnValue;
int intTemp;
int ipage = Convert.ToInt32(spage);
int StartInt = 0;
int iLengthInt = 2; intTemp = str1.Length;//取得字符串长度 if (ipage == 1)
{
StartInt = 0;
iLengthInt = 2;
}
else
{
StartInt = (ipage - 1) * iLengthInt; if ((intTemp - ipage * 2) < 2)
{
iLengthInt = intTemp - (ipage - 1) * 2;
}
else
{
iLengthInt = 2;
}
} returnValue = str1.Substring(StartInt, iLengthInt); returnValue = ConvertString(returnValue, 16, 10); return Convert.ToByte(returnValue);
} /// <summary>
/// ConvertString(值,來源进制,目的进制);
/// </summary>
/// <param name="value"></param>
/// <param name="fromBase"></param>
/// <param name="toBase"></param>
/// <returns></returns>
string ConvertString(string value, int fromBase, int toBase)
{
int intValue = Convert.ToInt32(value, fromBase);
return Convert.ToString(intValue, toBase);
}
-----------------------------
方法二:
/// <summary>
/// 将指定的十六进制字符串转化为普通字符串
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
private string HexStrToStr(string text)
{
string result = "";
byte[] bytes = new byte[text.Length / 2];
int i = 0, r = 0;
while (i < text.Length)
{
bytes[r] = byte.Parse(text.Substring(i, 2), System.Globalization.NumberStyles.HexNumber);
i += 2;
r++;
}
result = Encoding.GetEncoding("GB2312").GetString(bytes);
return result;
} /// <summary>
/// 将指定的字符串转化为16进制的字符串
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
private string StrToHexStr(string text)
{
string result = "";
byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(text);
foreach (byte byt in bytes)
{
result += Convert.ToString((short)byt, 16);
}
return result;
}
这两个方法怎么都有问题啊,不能转换???
需要转换的串是:D4DDCDA3B4FACAD5B7D1D2B5CEF1
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货