当前位置:编程学习 > C#/ASP.NET >>

求教:C# base64binary 解码 成 String

求教:C#  base64binary 解码  成 String



现有SMS的webservices返回的res2.msgContent值,类型为base64binary ,如何转成String类型?

本人非.net程序员,临时接手此事,求教各位,不胜感激!


在线等!



--------------------编程问答-------------------- string str =  System.Text.Encoding.Default.GetString(Convert.FromBase64String("内容
")); --------------------编程问答-------------------- 帮顶!!!!!!!!!!!! --------------------编程问答-------------------- string result2 = System.Text.Encoding.Default.GetString(Convert.FromBase64String(res2.msgContent));

出错信息:
错误 1 与“System.Convert.FromBase64String(string)”最匹配的重载方法具有一些无效参数 C:\Documents and Settings\Administrator.WINNER\桌面\SMS\SMS\API.cs 127 70 SMS


错误 2 参数“1”: 无法从“byte[]”转换为“string” C:\Documents and Settings\Administrator.WINNER\桌面\SMS\SMS\API.cs 127 95 SMS



引用 1 楼 cpp2017 的回复:
string str = System.Text.Encoding.Default.GetString(Convert.FromBase64String("内容
"));
--------------------编程问答--------------------

byte[] sByte = Convert.FromBase64String(base64);
string s = System.Text.Encoding.ASCII.GetString(sByte);
--------------------编程问答-------------------- 用了你的代码,仍然报错:
出错信息:
错误 1 与“System.Convert.FromBase64String(string)”最匹配的重载方法具有一些无效参数 

错误 2 参数“1”: 无法从“byte[]”转换为“string”




引用 4 楼 rqx110 的回复:
C# code

byte[] sByte = Convert.FromBase64String(base64);
string s = System.Text.Encoding.ASCII.GetString(sByte);
--------------------编程问答--------------------  

byte[] data=Convert.FromBase64String(data);
这是解码
那还要看你的string 是什么格式的.

UTF8:
string str= System.Text.Encoding.UTF8.GetString(data);

其他格式类似 --------------------编程问答-------------------- res2.msgContent值是字节数组,注意转换顺序...
Convert.ToBase64String(System.Text.Encoding.ASCII.GetString(res2.msgContent))
--------------------编程问答--------------------                     byte[] sByte = Convert.FromBase64String(res2.msgContent);
                    result2 = System.Text.Encoding.ASCII.GetString(sByte);

原始数据res2.msgContent是base64Binary类型的,
是这行报错:byte[] sByte = Convert.FromBase64String(res2.msgContent);    无法从“byte[]”转换为“string”


引用 6 楼 guankai 的回复:
byte[] data=Convert.FromBase64String(data);
这是解码
那还要看你的string 是什么格式的.

UTF8:
string str= System.Text.Encoding.UTF8.GetString(data);

其他格式类似
--------------------编程问答-------------------- 更正...应该这样...
System.Text.Encoding.Default.GetString(Convert.FromBase64String(System.Text.Encoding.ASCII.GetString(res2.msgContent))
--------------------编程问答-------------------- string result2 = Convert.ToBase64String(System.Text.Encoding.ASCII.GetString(res2.msgContent));

郁闷,仍然是这两个错误:
出错信息:
错误 1 与“System.Convert.FromBase64String(string)”最匹配的重载方法具有一些无效参数  
错误 2 参数“1”: 无法从“byte[]”转换为“string”




引用 7 楼 vrhero 的回复:
res2.msgContent值是字节数组,注意转换顺序...

C# code
Convert.ToBase64String(System.Text.Encoding.ASCII.GetString(res2.msgContent))
--------------------编程问答-------------------- res2.msgContent
到底是什么格式?
--------------------编程问答-------------------- 根据错误来看是byte[]数组.
--------------------编程问答-------------------- try:

string str = 
System.Text.Encoding.Default.GetString(res2.msgContent); --------------------编程问答-------------------- string result2 = System.Text.Encoding.Default.GetString(Convert.FromBase64String(System.Text.Encoding.ASCII.GetString(res2.msgContent)));

执行了一下,弹出了:Base-64 字符串中的无效字符,是什么原因呢?





引用 9 楼 vrhero 的回复:
更正...应该这样...

C# code
System.Text.Encoding.Default.GetString(Convert.FromBase64String(System.Text.Encoding.ASCII.GetString(res2.msgContent))
--------------------编程问答-------------------- <xsd:element name="msgContent" type="xsd:base64Binary" minOccurs="1" maxOccurs="1">


是base64Binary类型的数组。



引用 11 楼 cpp2017 的回复:
res2.msgContent
到底是什么格式?
--------------------编程问答-------------------- XML数据都是字符串啊,哪儿来的字节数组...贴一段数据实例看看... --------------------编程问答-------------------- XML数据都是字符串啊,哪儿来的字节数组...贴一段数据实例看看...
======>
代理类给转化了,你看他的错误信息就知道是byte[]了.
--------------------编程问答--------------------

各位大侠,可怎么是好!

怎么处理啊,base64二进制数组,如何转成string啊


--------------------编程问答-------------------- 在C#中到底是什么类型?base64Binary是服务端定义的类型,你看看程序中是什么类型?
--------------------编程问答-------------------- 是byte[] 类型 


       [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="base64Binary", Order=11)]
        public byte[] msgContent {
            get {
                return this.msgContentField;
            }
            set {
                this.msgContentField = value;
                this.RaisePropertyChanged("msgContent");
            }
        }




引用 19 楼 cpp2017 的回复:
在C#中到底是什么类型?base64Binary是服务端定义的类型,你看看程序中是什么类型?
--------------------编程问答-------------------- 你不要用代理类请求一份数据,看看msgContent节的内容...

再用代理类获取相同的数据,把msgContent用System.Text.Encoding.Default.GetString转换为字符串...

然后对比一下,或者都贴上来大家帮你分析...不能让我们靠猜的... --------------------编程问答-------------------- 不懂,帮顶下 --------------------编程问答-------------------- string str =  
System.Text.Encoding.Default.GetString(res2.msgContent); 
 


--------------------编程问答-------------------- 以下是移动公司帮截的msgContent中的内容,也即base64类型:
 
 
dMUNAAfRABxkZWxpdnJkMTAwN
zA5MTYzNzEwMDcwOTE2MzcxMz
gxMDAwMTEwMAAAAAAAAAAAAAAAAAAA --------------------编程问答--------------------

原本是在一行的,CSDN回帖提示说其中有非法字符,只好换行才发出去了。

--------------------编程问答--------------------   public string DecodeBase64(string code)
        {
            string decode = "";
            try
            {
                byte[] bytes = Convert.FromBase64String(code);
                decode = Encoding.UTF8.GetString(bytes);
            }
            catch
            {
                decode = code;
            }
            return decode;
        } --------------------编程问答-------------------- 把代理类改一下,直接改成字符串不要转字节数组...然后用1楼慕白兄的代码即可... --------------------编程问答-------------------- delivrd1007091637100709163713810001100
--------------------编程问答--------------------     string str = " dMUNAAfRABxkZWxpdnJkMTAwNzA5MTYzNzEwMDcwOTE2MzcxMzgxMDAwMTEwMAAAAAAAAAAAAAAAAAAA";
            string str1 = System.Text.Encoding.Default.GetString( Convert.FromBase64String(str));
            str1 = str1.TrimEnd('\0');



//但是你的string以t\0开头的。
--------------------编程问答-------------------- 呵呵 解决了吗
--------------------编程问答-------------------- 服务器端,读取路径 http://localhost/imageput/an_1328159468-39.jpg 下的图片,进行编码变成类似:
version="1.0"?>
<base64Binary>/f32oHm5sH93PVwHPK93fTsvfn53/NzWbT5n9/f3</base64Binary>
这种格式,怎么写呢 --------------------编程问答-------------------- 直接转换成object --------------------编程问答-------------------- 我也碰到了这个问题,请问楼主如何解决的? --------------------编程问答-------------------- 我的提问链接地址是:http://bbs.csdn.net/topics/390408695,不知道楼主是否解决了这个问题! --------------------编程问答-------------------- 如果解决了能否帮我回复一下,急!!!!!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,