解析二进制流问题 非常有难度 高手请进

haozi1983915 2011-04-08 11:42:18
现在遇到了一个问题 我现在有一个字符串 “FFD8FFE0” 我从网上下了一段代码将这个字符串转换成二进制字节数组 代码如下:

String str = “FFD8FFE0”;
byte[] bytes = new byte[str.length / 2];

for (int i = 0; i < s.length(); i += 2) {
int high = Integer.parseInt(s.substring(i, i+1),16);
int low = Integer.parseInt(s.substring(i+1, i+2),16);
bytes[i/2] = (byte) ((high << 4) | low);
}

try{
OutputStream os=new FileOutputStream("d:\\a.data");
os.write(bytes);
os.flush();
os.close();
}catch(Exception ex){
ex.printStackTrace();
}

然后我用ue将这个二进制文件打开 看到里面是 FF D8 FF E0

现在问题来了 我怎么将 bytes 还原回 “FFD8FFE0“ ?????????????
,实际上这个字符串是由一些0-255的数字转换而来的 255就是FF ,

因为这个字符串是要进行网络传输的,大小非常重要,如果将 byte[] byts = (newjwxy).getBytes("utf-8");
那么就是8个字节

上面的方法转换后就是4个字节很省流量。
请大家指教 跪谢










...全文
96 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi1983915 2011-04-08
  • 打赏
  • 举报
回复
草 找到方法了 太简单了

public static String byte2hex(byte[] b) // 二进制转字符串
{
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs = hs + "0" + stmp;
else
hs = hs + stmp;
}
return hs;
}
和大家分享一下吧

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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