base64 编码 转为二进制数 ☆急☆

dawei2310 2009-10-28 12:13:12

<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8" ?>
<base64Binary xmlns="http://www.digital-star.com.cn/">
H4sIAJXSH4kA/7VYWVMbRxB+T1X+g0qvKaxdiU
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
YV9T4j/VBuMUDyMAAA==</base64Binary>


转为二进制数 怎么转
我需要得到2进制 byte[] 的形式才能进行下一步操作 进行解压的过程。
...全文
1737 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
potahai 2009-10-28
  • 打赏
  • 举报
回复
http://c4lijie.5d6d.com/redirect.php?tid=179&goto=lastpost

这里有你需要的答案
James__Zhan 2009-10-28
  • 打赏
  • 举报
回复
把base64Binary里面的String拿出来,这个String就是Base64String,再使用Base64.decode(String base64String)直接就得到了byte[]了。

参考:http://blog.csdn.net/zhiqiangzhan/archive/2009/10/12/4657571.aspx
dawei2310 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 zhiqiangzhan 的回复:]
引用 9 楼 dawei2310 的回复:
引用 7 楼 zhiqiangzhan 的回复:
如果你的数据是通过HTTP得到的,那么很有可能你的数据是经过GZIP压缩的,不是ZIP, 你试试GZIP解压数据试试。

参考:http://blog.csdn.net/zhiqiangzhan/archive/2009/10/26/4728127.aspx


亲爱的哥哥 找到了主要原因 就是这个原因。。
到此这个问题已经解决 谢谢你的回答
我就是要把这些包包 给放到J2ME上去。。用手机处理返回的数据。

呵呵,瞎猫碰到死耗子,结贴给分。
[/Quote]

好嘞
James__Zhan 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dawei2310 的回复:]
引用 7 楼 zhiqiangzhan 的回复:
如果你的数据是通过HTTP得到的,那么很有可能你的数据是经过GZIP压缩的,不是ZIP, 你试试GZIP解压数据试试。

参考:http://blog.csdn.net/zhiqiangzhan/archive/2009/10/26/4728127.aspx


亲爱的哥哥 找到了主要原因 就是这个原因。。
到此这个问题已经解决 谢谢你的回答
我就是要把这些包包 给放到J2ME上去。。用手机处理返回的数据。
[/Quote]
呵呵,瞎猫碰到死耗子,结贴给分。
dawei2310 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhiqiangzhan 的回复:]
浏览器能自动处理GZIP压缩过的数据。
[/Quote]
问题解决 展现给我的就是
xml文件的格式。。
多谢
dawei2310 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhiqiangzhan 的回复:]
如果你的数据是通过HTTP得到的,那么很有可能你的数据是经过GZIP压缩的,不是ZIP, 你试试GZIP解压数据试试。

参考:http://blog.csdn.net/zhiqiangzhan/archive/2009/10/26/4728127.aspx
[/Quote]

亲爱的哥哥 找到了主要原因 就是这个原因。。
到此这个问题已经解决 谢谢你的回答
我就是要把这些包包 给放到J2ME上去。。用手机处理返回的数据。
James__Zhan 2009-10-28
  • 打赏
  • 举报
回复
浏览器能自动处理GZIP压缩过的数据。
James__Zhan 2009-10-28
  • 打赏
  • 举报
回复
如果你的数据是通过HTTP得到的,那么很有可能你的数据是经过GZIP压缩的,不是ZIP, 你试试GZIP解压数据试试。

参考:http://blog.csdn.net/zhiqiangzhan/archive/2009/10/26/4728127.aspx
dawei2310 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhiqiangzhan 的回复:]
你确定你得到的byte[]是经过zip压缩过的吗,而不是其他的压缩方式,比如gzip,或者根本没有被压缩。
[/Quote]

c# webservice
内容是返回一个ds。
我们都知道返回的webservice 是以xml文件的形式展现给我们的。
dataset 值c#里的数据集 好比与table集合
webservice 方法里面是这样处理dataset ds的 。
如果
return ds;
则在web浏览器 访问是这种形式的:
XML code
<?xml version="1.0" encoding="utf-8" ?> 
- <DataSet xmlns="http://www.digital-star.com.cn/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="Table">
- <xs:complexType>
- <xs:sequence>
<xs:element name="人员编号" type="xs:string" minOccurs="0" />
<xs:element name="中文姓名" type="xs:string" minOccurs="0" />
<xs:element name="撤销时间" type="xs:string" minOccurs="0" />
<xs:element name="相片" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <Table diffgr:id="Table1" msdata:rowOrder="0">
<人员编号>123465345</人员编号>
<中文姓名>张良</中文姓名>
<英文姓名 />
<别名或绰号 />
<性别>1</性别>
<出生日期>2009-01-08T10:10:39+08:00</出生日期>
<移交地址省市县区>张家口</移交地址省市县区>
<移交地址详细地址>潍坊市</移交地址详细地址>
<撤销时间>19520827175518</撤销时间>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>





如果处理ds 则返回:
XML code
<?xml version="1.0" encoding="utf-8" ?> 
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>



处理的方法是这样的
C# code
 MeoryStream ms=new MemoryStream();
XmlSerializer ser = new XmlSerializer(typeof(DateSet));
ser.Serialize(ms,ds);
return CompressionHelper.Compress(buffer);




C# code
     CompressionHelper.Compress(byte[] bytesToCompress){//方法内容:
MeoryStream ms=new MemoryStream();
Stream s = OUtputStream(ms);
s.Write(bytesToCompress,0,bytesToCompress.Length);
s.Close();
retrun ms.ToArray();
}




问题:
我现在要把
<?xml version="1.0" encoding="utf-8" ?> 
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>


返回的结果给解出来
webservice 是不变的。我要在java程序上面解返回的xml文件
也就是我怎么处理
H4sIAJXSH4kA/7VYWVMbRxB 
……
……
VBuMUDyMAAA==

这个。。
是被压缩了。
我如何的处理解压并且在java 或者J2ME 处理成的是dataset的形式!
注:C# webservice 不变 默认的返回就是
<?xml version="1.0" encoding="utf-8" ?> 
<base64Binary xmlns="http://www.digital-star.com.cn/">H4sIAJXSH4kA/7VYWVMbRxB
……
……
VBuMUDyMAAA==</base64Binary>


我要处理这个!
高分给出。希望能够解决
James__Zhan 2009-10-28
  • 打赏
  • 举报
回复
你确定你得到的byte[]是经过zip压缩过的吗,而不是其他的压缩方式,比如gzip,或者根本没有被压缩。
yangit11 2009-10-28
  • 打赏
  • 举报
回复
关注下
dawei2310 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhiqiangzhan 的回复:]
把base64Binary里面的String拿出来,这个String就是Base64String,再使用Base64.decode(String base64String)直接就得到了byte[]了。

参考:http://blog.csdn.net/zhiqiangzhan/archive/2009/10/12/4657571.aspx

[/Quote]

不行啊。。我试了 得到后的byte[]
我用
public static byte[] unZip(byte[] data) {
byte[] b = null;
try {
ByteArrayInputStream bis = new ByteArrayInputStream(data);
ZipInputStream zip = new ZipInputStream(bis);
while (zip.getNextEntry() != null) {
byte[] buf = new byte[1024];
int num = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while ((num = zip.read(buf, 0, buf.length)) != -1) {
baos.write(buf, 0, num);
}
b = baos.toByteArray();
baos.flush();
baos.close();
}
zip.close();
bis.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return b;
}

这个方法就解压不了 while 条件都进不去……
ASCII 十六进制 转换工具 简单计算器:可进行简单的四则运算,支持小键盘输入! 进制转换:数值型的常用进制的相互转换: (2、8、16)10 及 216 说明:由于数值型转换函数为自行编写,所以支持包括小数部分. (适用于计算器等级考级的笔试基础题) 字符转换: 可转换多个字符为ASCII码(十进制)及十六进制,且可加入前置及后置字符。 字符转ASCII(即字符的十进制): 其中字符转换为ASCII码中,如果字符为汉字(即双字节) 可选择:正数、负数或者字节分离三种表示方式 利如汉字"中" 正数:54992 负数:-10544 字节分离:214,208 说明: 如果包含汉字字符,且选了负数或字节分离表示方式, 请不要使用"-"或","来作为前、后置符,以免逆操作时引起错误 ASCII转字符:就是上面的逆操作,这时只要输入对应的ASCII码就能转换为字符 说明: 1.由于本程序有判断功能,所以可不用选择汉字表达方式, 即您输入54992或-10544或214,208都能转换为汉字"中" 2.如果进行待逆操作的ASCII码包含分隔,请必须在前置和后置符框输入对应字符 例如:%-15133;%-17725;想逆向转为字符,须在前置符填入% 后置符填入; %-15133 %-17725 则前置符填入% 后置符输入空格 注意要转为字符的对应数值一定有要间隔符 例如:%-15133%-17725是没法进行转换的,而应该像上面一样改为%-15133 %-17725 即间隔至少(默认)为空格符 字符转换为十六进制及其逆操作与上面基本相同 说明:例如在前置符加了%即可求UTF-8值 键盘ASCII查询:可查键盘按键的十进制与十六进制值。 (例如可查询F1-F12,Shift,Ctrl,Alt,回车,退格等键值) 字符与Base64互转:字符与Base64编码的互转,可自定义密钥,以达到简单的加密! 子网划分辅助: IP转二进制:把IP地址或子网掩码转化为二进制形式. 二进制数操作:把上面转化到的IP二进制进行取反、与、或操作。 说明:普通二进制(即没有包括".")也可进行操作。 IP二进制转十进制:即把上面得到的二进制结果重新转换为十进制方式。 常见问题: 1.问:“进制转换”与“字符转换”都具有转为十六进制的操作,有何不同? 答:“进制转换”只能转换数值型,而“字符转换”是把该字符串一位一位 分别当作字符来转换! 2."字符转换"中想把对应的值转化为对应的字符,如果包括分隔符,需要手工 填入。 (详见上面的:ASCII转字符) 3."字符转换"中点击“键盘的ASCII查询”(即有键盘图标的那个按钮后) 该按钮会自动隐藏,然后可按键盘键来得到对应的值 查询完毕,可单击下面的状态栏恢愎(键盘图标的那个按钮出现) 4.关于子网划分辅助的使用: 在这里给予一段(黑客X档案中iqst)如何利用子网掩码得到网络、主机地址的文章节选: 如下: 如何用子网掩码得到网络、主机地址 (1)将IP地址与子网掩码转换成二进制; (2)将二进制形式的IP地址与子网掩码做“与”运算,将答案化为十进制便得到网络地址; (3)将二进制形式的子网掩码取“反”; (4)将取“反”后的子网掩码与IP地址做“与”运算,将答案化为十进制便得到主机地址。 通过上面的一段大家应该有所了解了,如果还不太明白可勾选“示范”来查看。 我把上面操作的各个模块都独立出来而不是一步求出结果, 目的是让大家能更方便的使用各个步聚来完成类似的需求!

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧