`
name327
  • 浏览: 165439 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java字节、字符串互相转换类

 
阅读更多

可用于把文件转换成字符串,存储到源文件的String变量中。

package demo;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class TransformUtil {
	/*
	 * Convert byte[] to hex
	 * string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。
	 * 
	 * @param src byte[] data
	 * 
	 * @return hex string
	 */
	public static String bytesToHexString(byte[] src) {
		StringBuilder stringBuilder = new StringBuilder("");
		if (src == null || src.length <= 0) {
			return null;
		}
		for (int i = 0; i < src.length; i++) {
			int v = src[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				stringBuilder.append(0);
			}
			stringBuilder.append(hv);
		}
		return stringBuilder.toString();
	}

	/**
	 * Convert hex string to byte[]
	 * 
	 * @param hexString
	 *            the hex string
	 * @return byte[]
	 */
	public static byte[] hexStringToBytes(String hexString) {
		if (hexString == null || hexString.equals("")) {
			return null;
		}
		hexString = hexString.toUpperCase();
		int length = hexString.length() / 2;
		char[] hexChars = hexString.toCharArray();
		byte[] d = new byte[length];
		for (int i = 0; i < length; i++) {
			int pos = i * 2;
			d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
		}
		return d;
	}

	/**
	 * Convert char to byte
	 * 
	 * @param c
	 *            char
	 * @return byte
	 */
	private static byte charToByte(char c) {
		return (byte) "0123456789ABCDEF".indexOf(c);
	}

	public static void main(String[] args) throws IOException {
		File file = new File("e:\\consola.ttf");
		System.out.println(file.length());
		ByteBuffer bb = ByteBuffer.allocateDirect(1024);
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		FileChannel fc = new FileInputStream(file).getChannel();
		
		for (;fc.read(bb) > 0;) {
			bb.flip();
			for(;bb.hasRemaining();){
				baos.write(bb.get());
			}
			bb.clear();
		}
		System.out.println(bytesToHexString(baos.toByteArray()).trim());
	}
}
 
分享到:
评论

相关推荐

    String(含Hex)与Byte数组互相转换[代码]

    在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...

    base64与字符串互相转化

    在计算机科学中,尤其是编程领域,我们经常需要将字符串和Base64编码进行互相转换。下面我们将详细探讨这个过程: 1. **字符串到Base64的转化**: 当我们需要将一个字符串(通常由ASCII字符组成)编码为Base64时,...

    Java String与Byte类型转换

    `MyClass.class`是Java字节码文件,它是由`MyClass.java`源代码编译而来。这个过程包括将源代码中的字符串常量转换为字节码,这涉及到了String到Byte的转换。`input.txt`可能是一个文本文件,其内容可能需要在网络...

    Java 从网络中读取图片 转换成Base64字符串

    在Java编程中,将网络上的图片读取并转换为Base64字符串是一项常见的任务,尤其在Web开发中,这样的操作可以用于数据传输或者存储。Base64是一种编码方式,能够将二进制数据转化为可打印的ASCII字符,方便在网络上...

    Android byte[] 和 String互相转换

    在Java和Android中,将字节数组转换为字符串最常用的方法是使用`new String(byte[])`构造函数。此方法会使用平台默认的字符编码,这可能会导致在不同系统上显示不同的结果。为了避免这个问题,我们通常指定一个明确...

    Java Base64位编码与String字符串的相互转换,Base64与Bitmap的相互转换实例代码

    Java Base64位编码与String字符串的相互转换、Base64与Bitmap的相互转换实例代码 Java Base64位编码与String字符串的相互转换是Java开发中常用的技术,Base64是一种常用的编码方式,它可以将二进制数据编码成可读的...

    图片与Base64互相转换的工具类

    将图片转换成Base64编码 对字节数组字符串进行Base64解码并生成图片 Base64字符串转byte[] 判断图片base64字符串的文件格式 字符串转base64

    Java实现图片与二进制的互相转换

    Java实现图片与二进制的互相转换 Java实现图片与二进制的互相转换是Java编程中的一项基本操作,它将图片转换为二进制数据,然后再将二进制数据转换回图片。这种操作在多种应用场景中都有其重要价值,例如在网络上...

    PDF和Base64格式互相转换

    它将每3个字节的数据拆分为4个6位的“单词”,然后将每个6位的数字映射到一个特定的字符,从而形成可打印的ASCII字符串。 PDF与Base64之间的转换涉及到文件处理和数据编码的知识点: 1. **PDF转Base64**: 当你...

    JAVA变量类型之间的相互转换

    本文将详细解析JAVA中各种基本数据类型(如`byte`、`short`、`int`、`long`、`float`、`double`)以及它们与字符型、字符串型、日期型等之间的转换机制。 #### 基本数据类型及其取值范围 - **`byte`**:取值范围为...

    汉字和Unicode互相转换

    在Java中,`Character`类提供了转换方法,如`Character.codePointAt()`用于获取码点,`String.getBytes()`和`new String(bytes, "charset")`用于字节与字符串的转换。 此外,HTML文件中,`ZHS_Unicode.html`可能...

    day003【String类、static、Arrays类、Math类】.pdf

    3. 字符串与字符数组的转换:String底层是靠字符数组实现的,因此可以将String对象与char数组互相转换。 String类的构造方法使用举例: - 无参构造方法:public String(),用于创建一个空的字符串对象。 - 通过字符...

    java和javascript之间的DES加密解密

    同时,由于JavaScript可能无法处理字节流,所以可能需要将加密后的字节转换为Base64编码的字符串。在Java端解密时,需要先将Base64字符串解码回字节流。 5. **文件`DES加密解密`**: 压缩包中的文件可能包含了Java...

    Base64图片与字符进行相互转换

    - 将图片转换为Base64字符串时,首先读取图片文件的二进制数据,然后按照Base64编码规则进行转换。生成的字符串可以嵌入到HTML的`&lt;img&gt;`标签中,通过`data:`协议直接显示图片,无需HTTP请求。 - 示例代码(Python...

    java中url汉字编码互相转换实例

    要使用这些方法,你可以创建一个URL字符串,然后调用`toUtf8String`进行编码,再调用`unescape`进行解码,以确保原始字符串和编码后的字符串可以正确地互相转换。 ```java String original = "你好,世界"; String...

    java与javascript互相加解密

    2. 创建密钥:将字符串转换为字节数组,然后使用`CryptoJS.DES.createEncryptor`或`CryptoJS.DES.createDecryptor`。 3. 加密/解密:使用`encrypt`和`decrypt`方法,分别处理明文和密文。 要确保Java和JavaScript...

    unicode码与GB码互相转换

    标题中的"unicode码与GB码互相转换"涉及到两种主要的汉字编码标准:Unicode(国际通用的字符编码标准)和GBK(中国国家标准的扩展GB2312编码)。在嵌入式系统或者文件系统中,为了正确显示和存储中文字符,就需要...

    java源码包---java 源码 大量 实例

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    java jdk实列宝典 光盘源代码

    列表、集合与数组的互相转换;java为数据结构中的映射定义一个接口java.util.Map,有四个实现类HashMap Hashtable LinkedHashMap TreeMap用法和区别;对Map排序; 5字符串 使用String;判断一个字符串是否是合法的...

    《Java核心技术卷1》 学习笔记.doc

    ### Java核心技术卷1知识点梳理 ...以上是对《Java核心技术卷1》学习笔记的关键知识点梳理,涵盖了Java的基本概念、编程环境、数据类型、字符串操作、控制流结构等内容,有助于初学者快速掌握Java的基础知识。

Global site tag (gtag.js) - Google Analytics