日期:2014-05-18  浏览次数:20471 次

字节数组转换成字符串的问题
有一段这样的代码:把图片用二进制的方式读出来。
FileStream fs = new FileStream(@"D:\22-11-46-3-524454584.jpg",FileMode.Open,FileAccess.Read);
  byte[] mydata = new byte[fs.Length];
  int Length = Convert.ToInt32(fs.Length);
  fs.Read(mydata,0,Length);
  fs.Close();
我想把读出来的字节 mydata 转换成 字符串,请问该怎么转阿

------解决方案--------------------
Convert.ToBase64String
转回Convert.FromBase64String
------解决方案--------------------
/// <summary>
/// 将文本字符串转换成带,号分离的二进制字符串
/// </summary>
/// <param name="strContent">文本字符串</param>
/// <returns>带,号分离的二进制字符串</returns>
private string strTextTostrBin(string strText)
{
byte[] bytearr=null;

string stringtobin="";
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
bytearr=encoding.GetBytes(strText);

for(int i=0;i<bytearr.Length;i++)
{
stringtobin+=","+bytearr[i].ToString();
}
return stringtobin.Substring(1);
  
}

/// <summary>
/// 将带,号分离的二进制字符串转换成文本字符串
/// </summary>
/// <param name="strBin">带,号分离的二进制字符串</param>
/// <returns>文本字符串</returns>
private string strBinTostrText(string strBin)
{
string [] bintostr=strBin.Split(',');
Array binArray=Array.CreateInstance(Type.GetType("System.Byte"),bintostr.Length);
for(int i=binArray.GetLowerBound(0);i<=binArray.GetUpperBound(0);i++)
{
binArray.SetValue(byte.Parse(bintostr[i]+""),i);
}
 
byte[] strtobin=new byte[bintostr.Length];
for(int i=binArray.GetLowerBound(0);i<=binArray.GetUpperBound(0);i++)
{
strtobin[i]=(byte)binArray.GetValue(i);
}
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
return encoding.GetString(strtobin); 
}