首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

亲,这道image->xml的题,该怎么解决

2012-06-09 
亲,这道image-xml的题,该如何解决?面试遇一题(要求C#实现将SQL SERVER中一image字段转换为xml文件),好生

亲,这道image->xml的题,该如何解决?
面试遇一题(要求C#实现将SQL SERVER中一image字段转换为xml文件),好生为难,故共享与此:

MS SQL SERVER 中一个表的一个Image字段值:
FieldName DataCurrent
FieldValue 0x1F8B0800000000000400EDBD07601C4996...(数据很大,略)

用一个普通xml文件先转换为Image字段值后,发现:
FieldName DataCurrent
FieldValue 0x3C3F786D6C2076657273696F6E3D22312E30...(数据很大,略)

该xml文件开头为:
<?xml version="1.0" encoding="utf-16"?><...>

采用各种不同的编码转换,如ASICC,UNICODE,UTF32,UTF8均未能转换成数据库中以0x1F8B...开头的数据值,诸位有何高见?

[解决办法]
你读出来时应该是byte[],你可以将其转为字符串,存入xml

Encoding.Default.GetString()

BitConverter.ToString
还有其他很多方法
[解决办法]
Convert.ToBase64String
[解决办法]
string xml = Encoding.ASCII.GetString(image); 
别这样用,他不是字符串形式,不要用字符编码,这样
string xml = Convert.ToBase64String(image);
[解决办法]
转换函数

C# code
#region "字符串图片转换"/// <summary>/// 将Base64转成图片/// </summary>/// <param name="str">Base64字符串</param>/// <returns>图片</returns>/// <remarks></remarks>public static Image StrToImage(string str){    if (str.Length == 0) {        return null;    }    byte[] bs = Convert.FromBase64String(str);    System.IO.Stream stream = new System.IO.MemoryStream(bs);    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(stream);    return bmp;}/// <summary>/// 将图片转成Base64字符串/// </summary>/// <param name="image">图片</param>/// <returns>Base64字符串</returns>/// <remarks></remarks>public static string ImageToStr(Image image){    if (image == null) {        return "";    }    byte[] resByte = null;    dynamic MemoryStream = new System.IO.MemoryStream();    image.Save(MemoryStream, System.Drawing.Imaging.ImageFormat.Png);    resByte = MemoryStream.GetBuffer();    //取内存流数据     return Convert.ToBase64String(resByte);}#endregion 

热点排行