十六进制字符串转化成字符串输出

时间:2023-01-07 10:12:32
///<summary>
/// 从16进制转换成汉字
/// </summary>
/// <param name="hex"></param>
/// <param name="charset">编码,如"utf-8","gb2312"</param>
/// <returns></returns>
public string HexToStr(string hex, string charset)
{
if (hex == null)
throw new ArgumentNullException("hex");
hex
= hex.Replace(",", "");
hex
= hex.Replace("\n", "");
hex
= hex.Replace("\\", "");
hex
= hex.Replace(" ", "");
if (hex.Length % 2 != 0)
{
hex
+= "20";//空格
}
// 需要将 hex 转换成 byte 数组。
byte[] bytes = new byte[hex.Length / 2];

for (int i = 0; i < bytes.Length; i++)
{
try
{
// 每两个字符是一个 byte。
bytes[i] = byte.Parse(hex.Substring(i * 2, 2),
System.Globalization.NumberStyles.HexNumber);
}
catch
{
// Rethrow an exception with custom message.
throw new ArgumentException("hex is not a valid hex number!", "hex");
}
}
System.Text.Encoding chs
= System.Text.Encoding.GetEncoding(charset);
return chs.GetString(bytes);
}

 

public string HexToStr(string mHex) // 返回十六进制代表的字符串
{
mHex
= mHex.Replace(" ", "");
if (mHex.Length <= 0) return "";
byte[] vBytes = new byte[mHex.Length / 2];
for (int i = 0; i < mHex.Length; i += 2)
if (!byte.TryParse(mHex.Substring(i, 2), NumberStyles.HexNumber, null, out vBytes[i / 2]))
vBytes[i
/ 2] = 0;
return ASCIIEncoding.Default.GetString(vBytes);
}
 public string StrToHex(string mStr) //返回处理后的十六进制字符串
{
return BitConverter.ToString(
ASCIIEncoding.Default.GetBytes(mStr)).Replace(
"-", " ");
}

 

 /// <summary>  

/// 16进制字符串转字节数组

/// </summary>

/// <param name="hexString"></param>

/// <returns></returns>

public static byte[] strToToHexByte(string hexString)
{

hexString
= hexString.Replace(" ", "");

if ((hexString.Length % 2) != 0)

hexString
+= " ";

byte[] returnBytes = new byte[hexString.Length / 2];

for (int i = 0; i < returnBytes.Length; i++)

returnBytes[i]
= Convert.ToByte(hexString.Substring(i * 2, 2).Trim(), 16);

return returnBytes;

}