如何在Java中将文件转换为十六进制

一个简单的Java程序演示了如何使用String格式程序(“%02X”)File转换为Hex值。 所附评论应不言自明。

package com.mkyong;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;

public class File2Hex
{
    public static void convertToHex(PrintStream out, File file) throws IOException {
	InputStream is = new FileInputStream(file);
	 
	int bytesCounter =0;		
	int value = 0;
	StringBuilder sbHex = new StringBuilder();
	StringBuilder sbText = new StringBuilder();
	StringBuilder sbResult = new StringBuilder();
			
	while ((value = is.read()) != -1) {    
	    //convert to hex value with "X" formatter
            sbHex.append(String.format("%02X ", value));
	             
	    //If the chracater is not convertable, just print a dot symbol "." 
	    if (!Character.isISOControl(value)) {
	      	sbText.append((char)value);
	    }else {
	        sbText.append(".");
	    }
	            
	    //if 16 bytes are read, reset the counter, 
            //clear the StringBuilder for formatting purpose only.
	    if(bytesCounter==15){
	      	sbResult.append(sbHex).append("      ").append(sbText).append("\n");
	       	sbHex.setLength(0);
	        sbText.setLength(0);
	       	bytesCounter=0;
	    }else{
	        bytesCounter++;
	    }
       }
			
	//if still got content
	if(bytesCounter!=0){			
	     //add spaces more formatting purpose only
	    for(; bytesCounter<16; bytesCounter++){
		//1 character 3 spaces
		sbHex.append("   ");
	    }
	    sbResult.append(sbHex).append("      ").append(sbText).append("\n");
        }

        out.print(sbResult);
        is.close();
  }
	
   public static void main(String[] args) throws IOException
   {	
    	//display output to console
    	convertToHex(System.out, new File("c:/file.txt"));
    	
    	//write the output into a file
    	convertToHex(new PrintStream("c:/file.hex"), new File("c:/file.txt"));
    } 
}

演示版

具有一些虚假内容的文件

ABCDEFG
12345678
!@#$%^&*()
Testing only

经过上述类的处理后,将显示以下十六进制值:

41 42 43 44 45 46 47 0D 0A 31 32 33 34 35 36 37       ABCDEFG..1234567
38 0D 0A 21 40 23 24 25 5E 26 2A 28 29 0D 0A 54       8..!@#$%^&*()..T
65 73 74 69 6E 67 20 6F 6E 6C 79                      esting only

参考

http://download.oracle.com/javase/1.5.0/docs/api/java/util/Formatter.html#syntax

翻译自: https://mkyong.com/java/how-to-convert-file-to-hex-in-java/

新手小白入门编程第2讲 JAVA编程环境搭建 JDK与环境变量、Eclipse 1 JDK 1.1 JDK概述 JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。 JDK是整个java开发的核心,它包含了: JAVA开发工具(jdk\bin) 基础开发库(jdk\jre\lib\rt.jar) 基础开发库的源码(jdk\src.zip) 1.2 JDK下载与安装 本次使用的是JDK1.8,详细安装步骤可以参见”JDK培优安装手册”. 注意事项: 同时安装多个JDK时需要使用执行环境变量来确认使用的是哪个jdk 安装时选择默认选项安装到默认 阅读详情

相关推荐

博途WinCC上位机避坑指南:从工控机选型到趋势图优化的完整流程

本文详细解析了博途WinCC上位机开发全流程,从工控机选型到趋势图优化的关键技巧。针对工业自动化场景,提供硬件配置指南、网络优化方案和性能提升策略,帮助工程师避开常见陷阱,实现稳定高效的HMI系统部署。特别强调PC Station与传统触摸屏的选型对比及SIMATIC NET配置优化。

pp12345的博客 255

Java File 与进制 与MultipartFile的一些操作

存储文件的方式很多,可将上传文件存储在服务器,数据库记录存储文件索引地址等文件信息,也可将文件转换为输入流直接写入数据库的Blob类型中保存,当然你也可以根据需求不同将文件16进制字符串进行传输或保存(注意:上传文件的大小一般小于16进制字符串后大小);3:MultipartFileFile类型。1:File16进制字符串。2:16进制字符串输入流。

weixin_45876411的博客 1559

【归因】MATLAB实现最佳指纹法(待更新)

简述用于归因分析的最佳指纹法,及其MATLAB实现。

WW、forever的博客 4253

java 文件流 16进制字符串,然后再为文件

记录一个需求情况,文件为文件流byte[]数组。然后把数组16进制的字符串。在把16进制字符串 重组成文件。

liaoxiaolin520的博客 1646

如何在 Java 中将 InputStream 读取/换为字符串?

如果您有一个 java.io.InputStream 对象,您应该如何处理该对象并生成一个 String?假设我有一个包含文本数据的 InputStream,并且我想将其换为 String,例如,我可以将其写入日志文件。获取 InputStream 并将其换为 String 的最简单方法是什么?

HuntsBot的博客 7108

java 文件十六进制_JAVA将文件十六进制字符串和十六进制字符串生成文件的方法...

以下代码以APK文件为例,其他格式的文件方法一样,代码如下:packagecom.evideostb.billsystem.module.update;importjava.io.*;/***Createdbyzhangchuanzhaoon2015-12-2215:31.*/publicclassExportApk{privatestaticfinalStringE...

weixin_36095188的博客 2262

文件16进制hex格式并进行传输,接收后进行还原

1.使用Linux xxd命令进行文件格式的换 xxd raw_filename > yanshi.txt 2.使用python进行文件数据格式的还原 import struct filename_r = r'C:\Users\WHQ\Desktop\yanshi.txt' filename_w = r'C:\Users\WHQ\Desktop\restult_yanshi.txt' f_r = open(filename_r, "r") # 返回一个文件对

不解不惑 2106

java如何将文件转换十六进制

一个简单的java程序来验证字符串格式化程序的使用(“% 02x”)将文件转换十六进制值。例子package com.mkyong; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintSt...

周杰伦 5324

java读写十六进制文件_Java:文件到十六进制

我有一个Java文件FileInputStream in = null;try{in = new FileInputStream("C:\\pic.bmp");}catch{}我想将pic.bmp换为十六进制数值的数组,因此我可以将其编辑并保存为修改版本.有没有一个java类来做这个?你运气好几个月前我不得不这样做.这是一个从压缩版本,从命令行接受两个参数.两个comand行参数都是文件名…第一...

weixin_31133141的博客 1351

java实现十六进制数与图片的互相

<br />1、十六进制图片jpg<br />import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import ja

3528

JavaJava中二进制字节与十六进制

Java中字节与十六进制的相互换主要思想有两点: 1、二进制字节十六进制时,将字节高位与0xF0做"&“操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做”&“操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。 2、十六进制进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对...

然后微微笑的博客 1524

Java中二进制字节与十六进制

Java中字节与十六进制的相互换主要思想有两点: 1、二进制字节十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。 2、十六进制进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进

wzhw2008的专栏 1249

十六进制Unicode编码字符串文件转换为可读文件的Java程序

事情起因就是我手头有好些文件都带有Unicode编码字符串,具体显示效果是这样的:”\u51fd\u6570\u529f\u80fd\uff1a\u8df3\u8f6c\u81f3\u5176\u4ed6\u9875\u9762“。 嗯,很糟糕,这样是不能看的,所以我简单的写了个程序,自动换一下带十六进制Unicode编码字符串文件,支持文件夹嵌套。没准以后还能用着,就稍微整理了一下。impo

默数着自己的_小幸福 2335

java字节与十六进制_Java中二进制字节与十六进制

Java中字节与十六进制的相互换主要思想有两点:1、二进制字节十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。2、十六进制进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的...

weixin_32514497的博客 498

Java 实现十六进制数与图片的互相

1.十六进制图片jpg import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; /**

兰染 1万+

Java中二进制字节数组与十六进制

java中二进制字节数组与十六进制的代码及思路分析 一、一贯如此,先上代码,你可以直接拿去用,后面的分析可以慢慢看 public class Test01 { private static String hexStr = "0123456789ABCDEF"; public static void main(String[] args){ String str = "二进制十六进制

quanquan_i的专栏 2308

java--十六进制byte数组和byte数组十六进制

怎么说,最近使用ssm框架的时候,需要将文件十六进制的字符串传入数据库,按照传统的sql,一个rs.getBinaryStream()还有rs.setBinaryStream()就可以了,可是在ssm里面就不能这么写的啦。要用纯java去遍历了。   首先我们了解一下byte[]和十六进制字符串。   众所周知,byte就是我们所说的字节,一个字节有8位的长度,而一个中文字占两个字节,

kayden的CSDN 2014

java byte二进制输出_Java中二进制字节与十六进制

Java中字节与十六进制的相互换主要思想有两点:1、二进制字节十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。2、十六进制进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的...

weixin_33363265的博客 1358

Java文件操作】一个将文件化为十六进制字节数组的工具(可以以8086汇编查看内存的格式输出,很优雅)

将文件化为字节数组 写了一个方法,直接用即可 /** * 将文件化成字节数组 * * @param 要换的文件路径 * @return 换成的字节数组 * @throws IOException */ public static byte[] fileToByteArray(String filePath) throws IOException { // 创建...

寒泉 2万+

java字节16进制_Java中二进制字节与十六进制

Java中字节与十六进制的相互换主要思想有两点:1、二进制字节十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。2、十六进制进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的...

weixin_39873356的博客 1136

java读取文件 16进制_Java:文件到十六进制

小编典典你真幸运。我几个月前不得不这样做。这是一个精简版,需要从命令行获取两个参数。命令行参数都是文件名…第一个是输入文件,第二个是输出文件。输入文件以二进制形式读取,输出文件以ASCII十六进制形式写入。希望您可以根据自己的需要进行调整。import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream...

weixin_42153793的博客 1283
上一篇: 如何在Applet中加载音频文件
下一篇: Struts 2键属性示例
cyan20115
博客等级 码龄12年 193粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值