文档章节

JAVA将文件转成十六进制字符串和十六进制字符串生成文件的方法

zchuanzhao
 zchuanzhao
发布于 2015/12/24 09:49
字数 378
阅读 138
收藏 3
点赞 0
评论 0

以下代码以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();
   }

}


© 著作权归作者所有

共有 人打赏支持
zchuanzhao
粉丝 43
博文 227
码字总数 139227
作品 1
福州
程序员
JNI开发流程与引用数据类型的处理

今天我们来看下Java JNI,先看下维基百科给的定义, JNI, Java Native Interface, Java本地接口,是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用或库,也可以被其他程序调用。...

juexingzhe ⋅ 05/04 ⋅ 0

[Java教程 05] 常量与进制概述

前言 上一节我们介绍了注释、关键字与标识符,本章给大家介绍一下常量,准备好没有,要开车了! 常量 常量概述 在程序执行的过程中其值不可以发生改变 Java中常量分类 字面值常量 自定义常量...

呆萌钟 ⋅ 04/03 ⋅ 0

[学习笔记] [JSON] 轻量级数据交换格式JSON学习笔记

JSON基本概念: JSON全名: Java Script Object Natation. 即JavaScript的对象表现形式。 目前已经发展成一种轻量级的数据交换格式。 特点:不依赖于任何语言,跨平台。 使用场景主要用于不同...

kris_fei ⋅ 05/03 ⋅ 0

Java面试2018常考题目汇总及答案带走不谢!

一、JAVA基础篇-概念 1.简述你所知道的Linux: Linux起源于1991年,1995年流行起来的免费操作系统,目前, Linux是主流的服务器操作系统, 广泛应用于互联网、云计算、智能手机(Android)等...

java高级架构牛人 ⋅ 06/14 ⋅ 0

使用Java实现串口通信(二)

1.写在前面 距离上一篇文章《使用Java实现串口通信》已经过去快两年的时间了,在此期间收到了很多读者的反馈,很高兴可以帮助到这么多人,根据收到的反馈,我对代码逻辑进行了优化整理,并增...

容华谢后 ⋅ 06/06 ⋅ 0

【JavaSE(六)】Java常见对象(上)

原文地址:https://www.cloudcrossing.xyz/post/38/ 1 Object类 1.1 Object类概述 Object类位于java.lang包中,java.lang包包含着Java最基础和核 心的类,在编译时会自动导入。 Object类是类...

苍云横渡 ⋅ 05/16 ⋅ 0

二进制数据处理和基本数据类型转换工具类 - JHex

JHex工具类 简介 Java不是一个完全面向对象的编程语言,因为其有基本数据类型的存在,在Java中所有的数值类的基本数据类型都是有符号数,而在嵌入式系统常用的C语言编程的数据则分为有符号和...

王兴达 ⋅ 05/22 ⋅ 0

给Java字节码加上”翅膀“的JIT编译器

给Java字节码加上”翅膀“的JIT编译器 上面文章在介绍Java的内存模型的时候,提到过由于编译器的优化会导致重排序的问题,其中一个比较重要的点地方就是关于JIT编译器的功能。JIT的英文单词是...

九劫散仙 ⋅ 06/20 ⋅ 0

我终于搞清楚了和String有关的那点事儿。

String,是Java中除了基本数据类型以外,最为重要的一个类型了。很多人会认为他比较简单。但是和String有关的面试题有很多,下面我随便找两道面试题,看看你能不能都答对: Q1:定义了几个对...

⋅ 前天 ⋅ 0

字符串连接你用+还是用StringBuilder

前言 据我所知字符串确实已经成为 Java 开发人员最常用的类了,而且是大量使用。我们都知道,String 其实是封装了字符,所以俩字符串连接就是将字符串对象里面的字符连起来。很多人习惯使用来...

超人汪小建 ⋅ 06/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 56分钟前 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

SpringBoot简单使用ehcache

1,SpringBoot版本 2.0.3.RELEASE ①,pom.xml <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.0.3.RELE......

暗中观察 ⋅ 昨天 ⋅ 0

Spring源码解析(八)——实例创建(下)

前言 来到实例创建的最后一节,前面已经将一个实例通过不同方式(工厂方法、构造器注入、默认构造器)给创建出来了,下面我们要对创建出来的实例进行一些“加工”处理。 源码解读 回顾下之前...

MarvelCode ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部