JAVA将文件转成十六进制字符串和十六进制字符串生成文件的方法
JAVA将文件转成十六进制字符串和十六进制字符串生成文件的方法
zchuanzhao 发表于2年前
JAVA将文件转成十六进制字符串和十六进制字符串生成文件的方法
  • 发表于 2年前
  • 阅读 119
  • 收藏 3
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

以下代码以APK文件为例,其他格式的文件方法一样,代码如下:

package com.evideostb.billsystem.module.update;

import java.io.*;

/**
 * Created by zhangchuanzhao on 2015-12-22 15:31.
 */
public class ExportApk {
   private static final String EXPORT_PATH = "E:/易通管理系统/开发库/exe/Android/";

   public static void main(String[] args) {
      ExportApk apk = new ExportApk();
//    apk.apkToHex();
      apk.hexToApk("","E:/易通管理系统/开发库/exe/Android/part_ytcorridor-debug.apk");
   }

   /**
    * APK文件转成十六进制
    */
   public void apkToHex(){
      try
      {
         StringBuffer sb = new StringBuffer();
         FileInputStream fis = new FileInputStream("C:/android/part_ytcorridor-debug.apk");
         java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream();

         byte[] buffer = new byte[1024];
         int read = 1024;
         int readSize = 1024;
         while (read == readSize) {
            read = fis.read(buffer, 0, readSize);
            bos.write(buffer, 0, read);
         }
         // 得到图片的字节数组
         System.out.println(bos.toString());

         byte[] result = bos.toByteArray();
         // 字节数组转成十六进制
         String str = byte2HexStr(result);
            /*
             * 将十六进制串保存到txt文件中
             */
         PrintWriter pw = new PrintWriter(new FileWriter("C:/android/apk1.txt"));
         pw.println(str);
         pw.close();
      }
      catch (IOException e)
      {
         e.printStackTrace();
      }
   }

   /**
    * 十六进制转成APK
    * @param hex
    * @param filePath
    */
   public static void hexToApk(String hex, String filePath){
      StringBuilder sb = new StringBuilder();
      sb.append(hex);
      saveToApkFile(sb.toString().toUpperCase(), EXPORT_PATH + filePath);
   }

   public static void saveToApkFile(String src, String output)
   {
      if (src == null || src.length() == 0)
      {
         return;
      }
      try
      {
         FileOutputStream out = new FileOutputStream(new File(output));
         byte[] bytes = src.getBytes();
         for (int i = 0; i < bytes.length; i += 2)
         {
            out.write(charToInt(bytes[i]) * 16 + charToInt(bytes[i + 1]));
         }
         out.close();
      }
      catch (Exception e)
      {
         e.printStackTrace();
      }
   }

   private static int charToInt(byte ch)
   {
      int val = 0;
      if (ch >= 0x30 && ch <= 0x39)
      {
         val = ch - 0x30;
      }
      else if (ch >= 0x41 && ch <= 0x46)
      {
         val = ch - 0x41 + 10;
      }
      return val;
   }

   /*
    * 实现字节数组向十六进制的转换方法一
    */
   public static String byte2HexStr(byte[] b)
   {
      String hs = "";
      String stmp = "";

      for (int n = 0; n < b.length; n++)
      {
         stmp = (Integer.toHexString(b[n] & 0XFF));
         if (stmp.length() == 1)
            hs = hs + "0" + stmp;
         else
            hs = hs + stmp;
      }
      return hs.toUpperCase();
   }

}


共有 人打赏支持
粉丝 42
博文 226
码字总数 138610
作品 1
×
zchuanzhao
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: