求教: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
--------------------编程问答--------------------
--------------------编程问答-------------------- 用了你的代码,仍然报错:
byte[] sByte = Convert.FromBase64String(base64);
string s = System.Text.Encoding.ASCII.GetString(sByte);
出错信息:
错误 1 与“System.Convert.FromBase64String(string)”最匹配的重载方法具有一些无效参数
错误 2 参数“1”: 无法从“byte[]”转换为“string”
--------------------编程问答--------------------
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”
--------------------编程问答-------------------- 更正...应该这样...
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”
--------------------编程问答-------------------- 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 字符串中的无效字符,是什么原因呢?
--------------------编程问答-------------------- <xsd:element name="msgContent" type="xsd:base64Binary" minOccurs="1" maxOccurs="1">
是base64Binary类型的数组。
--------------------编程问答-------------------- 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");
}
}
--------------------编程问答-------------------- 你不要用代理类请求一份数据,看看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#