首页 新闻 搜索 专区 学院

在C#中如何将Byte型数组(存放汉字、标点符号、数字、字母等)转化为字符串直接显示啊?

0
悬赏园豆:40 [待解决问题]

如题,不能用ToString()直接转化,这样得到的是等效的十六进制数,而不是想要的内容,请问各位高手如何实现?

问题补充: 我在网上收了一下,有两种方法: 方法1: byte[] tmp; string str =new System.Text.ASCIIEncoding ().GetString (tmp ); 方法2: byte[] tmp; string str = System.Text.Encoding.ASCII.GetString(tmp); 但是生成时报错:命名空间“System.Text”中不存在类型或命名空间名称“ASCIIEncoding”或"ASCII"。是否缺少程序集引用 我用的是Sl4,System.Text包含的方法没有C#的msdn中的多,也不包含ASCIIEncoding或ASCII,请问如何解决
蓝冰儿的主页 蓝冰儿 | 初学一级 | 园豆:110
提问于:2011-02-09 17:57
< >
分享
所有回答(6)
0

#region 转换指定字节数组为字符串
/// <summary>
/// 转换指定字节数组为字符串
/// </summary>
/// <param name="ByteGet">字节数组Byte[]</param>
/// <param name="myEncoding">编码方式</param>
/// <returns></returns>
private static string getStringFromByteArray(Byte[] ByteGet,Encoding myEncoding)
{
int i,lngCount;
StringBuilder aTemp
= new StringBuilder(10000);
lngCount
= ByteGet.Length;
for(i = 0;i<lngCount;i+= 10000)
{
aTemp.Append(myEncoding.GetString(ByteGet,i,(lngCount
>=i+10000?10000:lngCount - i)));
}
if(i<=lngCount)
{
aTemp.Append(myEncoding.GetString(ByteGet,i,(lngCount
- i)));
}
return aTemp.ToString();
}

#endregion

 

邀月 | 园豆:25375 (高人七级) | 2011-02-09 19:49
试试
支持(0) 反对(0) 蓝冰儿 | 园豆:110 (初学一级) | 2011-02-10 12:00
下午试了一下,Encoding这个参数设为UTF-8的话,数字、字符、标点符号都可以,但是中文不行;若设为ASCII,在SL4中不认,请问有解决办法吗?或有将ASCII转化为UTF-8的方法吗?
支持(0) 反对(0) 蓝冰儿 | 园豆:110 (初学一级) | 2011-02-10 20:37
http://msdn.microsoft.com/en-us/library/system.text.encoding.ascii.aspx
支持(0) 反对(0) 邀月 | 园豆:25375 (高人七级) | 2011-02-11 09:10
0
天堂口 | 园豆:514 (小虾三级) | 2011-02-09 23:49
0

你先试试Encoding,如果不行试试这个

public static byte[] StringToByte(string str)
{
byte[] bytes = new byte[str.Length / 2];
for (int i = 0; i < str.Length / 2; i++)
{
int btvalue = Convert.ToInt32(str.Substring(i * 2, 2), 16);
bytes[i]
= (byte)btvalue;
}
return bytes;
}

public static string ByteToString(byte[] bytes)
{
StringBuilder strBuilder
= new StringBuilder();
foreach (byte bt in bytes)
{
strBuilder.AppendFormat(
"{0:X2}", bt);
}
return strBuilder.ToString();
}
clound | 园豆:481 (菜鸟二级) | 2011-02-11 09:46
试过了,得到的是16进制数据,不是中文啊
支持(0) 反对(0) 蓝冰儿 | 园豆:110 (初学一级) | 2011-02-16 22:13
0

byte[] tmp;
string strTemp = Encoding.Default.GetString(tmp, 0, tmp.Length);

头衔 | 园豆:364 (菜鸟二级) | 2011-02-11 09:48
0

你试试使用GB2312编码试试

归真 | 园豆:605 (小虾三级) | 2011-02-15 09:14
0

使用同一个Encoding进行string-〉byte[]-〉string即可

醉卧天南 | 园豆:369 (菜鸟二级) | 2011-04-19 11:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册