C#编程,如何把含有,汉子,数字,字母以及标点符号的一段文字转换为16进制,并从16进制在转换回来

如何把一段包含汉子,数字,大小写字母,标点符号的文字转换为16进制并把它从16进制转换回来呢?例如 “碑林区(8)号,一品美道A座2010室”。如果可以的话请给下代码。万分感谢!

/// <summary> /// 转换16进制 /// </summary> /// <param name="str"></param> /// <returns></returns> public string StrToHex(string str) { string strTemp = ""; if (str == "") return ""; byte[] bTemp = System.Text.Encoding.Default.GetBytes(str); for (int i = 0; i < bTemp.Length; i++) { strTemp += bTemp[i].ToString("X"); } return strTemp; }

//16进制转回字符串
string xx = ""; string s = dataBuff; string[] cip = new string[s.Length / 2]; for (int i = 0; i < s.Length / 2; i++) { cip[i] = s.Substring(2 * i, 2); } foreach (string x in cip) { int scc = int.Parse(x.ToString(), System.Globalization.NumberStyles.AllowHexSpecifier); xx += ((char)scc).ToString(); }
这种方法是我在用的,适用于字母和数字,至于汉字没试过,不一定行。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-15

你要的是这种???

 

如果是,代码如下:

foreach (byte item in Encoding.ASCII.GetBytes(textBox1.Text))

{

    textBox2.Text += item.ToString("X8") + " ";

}

 如果不是,请另外说明!

追问

这个是我转换后的效果,咱们俩转换完的16进制怎么不一样啊!我用的是VB刚接触C#不知道该怎么做!

本回答被提问者采纳
第2个回答  2014-01-15
public string EncodingSMS(string s)
{
string result = string.Empty;

byte[] arrByte = System.Text.Encoding.GetEncoding("GB2312").GetBytes(s);
for(int i = 0; i < arrByte.Length; i++)
{
result += System.Convert.ToString(arrByte[i], 16); //Convert.ToString(byte, 16)把byte转化成十六进制string
}

return result;
}
public string DecodingSMS(string s)
{
string result = string.Empty;

byte[] arrByte = new byte[s.Length / 2];
int index = 0;
for(int i = 0; i < s.Length; i += 2)
{
arrByte[index++] = Convert.ToByte(s.Substring(i,2),16); //Convert.ToByte(string,16)把十六进制string转化成byte
}
result = System.Text.Encoding.Default.GetString(arrByte);

return result;

}追问

我想要的是转换成16进制,并不是16进制和字节间的转换。刚接触C#.还望指导。

追答

System.Convert.ToString(arrByte[i], 16); 这一句就是取一个字节转成16进制的字符串
Convert.ToByte(s.Substring(i,2),16); 这一句是把16进制的字符串取两位转成字节,最后统一转成字符串,有什么问题吗?

追问

不好意思,是我自己理解错了!

相似回答