`

字节数组、字符数组、字节缓冲、字符缓冲的相互转化工具类

 
阅读更多
package com.cgb.train.core.nio;

import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
/**
 * 字符数组、字节数组、字符缓冲、字节缓冲的相互转换工具类
 * @author cgb
 *
 */
public class ByteCharUtils {

	
	/**
	 * 字节数组转换为字符缓冲
	 * @param bytes
	 * @param encoding
	 * @return
	 */
	public CharBuffer bytesToCharBuffer(byte[] bytes,String encoding){
		ByteBuffer byteBuffer=ByteBuffer.wrap(bytes);
		return Charset.forName(encoding).decode(byteBuffer);
		
	}
	/**
	 * 字符数组转换为字节缓冲
	 * @param chars
	 * @param encoding
	 * @return
	 */
	public static ByteBuffer charsToByteBuffer(char[] chars,String encoding){
		CharBuffer charBuffer=CharBuffer.wrap(chars);
		return Charset.forName(encoding).encode(charBuffer);
		
	}
	/**
	 * 字符串转换为字节缓冲
	 * @param str
	 * @param encoding
	 * @return
	 */
	public static ByteBuffer stringToByteBuffer(String str,String encoding){
		/*
		CharBuffer charBuffer=CharBuffer.wrap(str);
		 Charset.forName(encoding).encode(charBuffer);*/
		 
		 return Charset.forName(encoding).encode(str);
	}
	
	/**
	 * 将字符转为字节(编码)
	 * @param chars
	 * @param encoding
	 * @return
	 */
	public static byte[] getBytes (char[] chars,String encoding) {
		   Charset cs = Charset.forName (encoding);
		   CharBuffer cb = CharBuffer.allocate (chars.length);
		   cb.put (chars);
		   cb.flip ();
		   ByteBuffer bb = cs.encode (cb);
		   return bb.array();
		         }
	
	/**
	 * 将字节转为字符(解码)
	 * @param bytes
	 * @param encoding
	 * @return
	 */
		public static char[] getChars (byte[] bytes,String encoding) {
		      Charset cs = Charset.forName (encoding);
		      ByteBuffer bb = ByteBuffer.allocate (bytes.length);
		      bb.put (bytes);
		      bb.flip ();
		       CharBuffer cb = cs.decode (bb);
		  
		   return cb.array();
		}



}

 

分享到:
评论

相关推荐

    取指定字节数组中的子数组 一个很好类例子

    在`SonOfBufferedReader.java`中,可能会扩展`BufferedReader`类来提供自定义的读取字节或字符子数组的功能。 在`testInterface.java`中,可能包含了对这些功能的测试,确保能够正确地从字节数组中获取子数组,并且...

    字节流字符流练习

    Java提供了两种主要的IO流类型:字节流(Byte Stream)和字符流(Character Stream)。这两个概念是Java IO体系的基础,也是程序员在处理数据传输时经常遇到的工具。本练习文档将帮助你深入理解并熟练掌握这两种流的...

    Java IO 字节流 字符流

    通过选择合适的流类型、使用缓冲流和桥接流,以及利用工具类,开发者可以更好地处理各种数据输入输出需求。在实际项目中,根据数据的类型和需求,灵活运用这些流,将有助于优化代码的效率和可维护性。

    IO流学习(字节流 字符流 文本流)!

    字节流的操作通常涉及read()和write()方法,用于读取或写入单个字节,或者read(byte[])和write(byte[])用于读写字节数组。 接下来,我们讨论**字符流**。字符流是Java特有的,因为Java使用Unicode编码,所以字符流...

    java基本类型与byte数组互相转换.rar

    通过`ByteBuffer.allocate()`分配空间,然后调用`putInt()`将整数写入缓冲区,最后调用`array()`获取字节数组。 - **Float to Byte Array**:类似地,使用`ByteBuffer`的`putFloat()`方法。 - **Double to Byte ...

    将传进来的十六进制表示的字符串转换成byte数组 文件下载

    这个方法通过遍历字符串中的每一个字符,将每两个字符(一个十六进制数字)转换为一个字节,并放入byte数组中。 对于C#,可以使用`System.Convert`类的`FromHex`方法: ```csharp string hexString = "your_hex_...

    c#版字符串DES加密解密工具源码

    通常,密钥和向量都需要进行预处理,例如通过`Convert.ToByte()`将字符串转换成字节数组。 3. **创建加密流和解密流**:使用`CryptoStream`类创建加密和解密的流,将这些流附加到文件或内存缓冲区,以便进行读写操作...

    day10_转换流、高效流-答案2

    `BufferedOutputStream`的`write()`方法可以接受单个字节或字节数组,并将它们写入缓冲区,直到缓冲区满或者调用`flush()`方法时才真正写入文件。 在题目中,有三个练习: - 练习一展示了如何使用`...

    几种常见字符集以及字符串的转化方法.rar

    5. 使用标准库std::wstring_convert和std::codecvt_utf8类:在C++11及以上版本中,可以利用这些工具进行不同编码间的字符串转换。 GSMEncode.hpp文件可能包含关于GSM编码的信息,GSM编码是一种针对短信服务的7位...

    缓冲流&转换流习题答案1

    练习二展示了如何用`BufferedOutputStream`写出一个字节数组,也就是字符串转换成字节后的形式。步骤与练习一类似,只是调用了`write(byte[] buff)`方法。 练习三涉及到了文件复制,这是缓冲流的一个典型应用。在这...

    day20_字节流、字符流、属性集.pdf

    这两个流都有它们的顶级抽象类:字节流的`java.io.InputStream`和`java.io.OutputStream`,以及字符流的`java.io.Reader`和`java.io.Writer`。 字节流是最基础的流类型,它可以处理所有类型的数据,因为所有的数据...

    任意文件转换成C语言数组

    3. **生成C代码**:将缓冲区的内容转化为字符常量,如`'\0'`, `'\n'`等,并创建一个字符串,表示数组的初始化值。同时,确保在数组名后面加上正确的维度信息,如`char fileContent[文件大小] = {...};`。 4. **输出...

    JAVA 转换字符编码工具

    - `String.getBytes()` 和 `new String(byte[], charsetName)`:将字符串转换为字节数组,或将字节数组转换回字符串,需要指定字符编码。 - `InputStreamReader` 和 `OutputStreamWriter`:它们可以与`InputStream...

    23_IO_第2天(字节流、字符流)_讲义

    本讲义主要探讨的是Java中的字节流和字符流,这是IO操作的基础,也是开发过程中频繁使用的工具。字节流和字符流是Java IO框架的两大支柱,它们分别处理原始的字节数据和经过编码的字符数据。 字节流是Java中处理二...

    day019-io笔记和代码.rar

    3. IO流工具类的抽取,将所有的关流(字节流和字符流)方法抽取出来,优化代码 4. 字符流:(重点) * 使用场景:使用于处理文本相关的文件 * * Reader 抽象类: * |子类 * ...

    java IO流读写

    在Java中,IO流分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流处理单个字节的数据,而字符流则处理Unicode编码的16位字符。 1. **字节流**: - `InputStream` 和 `OutputStream` 是所有...

    java 写的字符编码转换工具(附带源码)

    4. **String的getBytes()和new String(byte[], charset)**:字符串类提供了获取字节数组的方法`getBytes()`,可以指定编码方式;反之,`new String(byte[], charset)`可以根据字节数组和编码创建新的字符串。 5. **...

    Android 数据存储之 FileInputStream 工具类及FileInputStream类的使用

    然后,将字符串转换为字节数组并写入文件,最后关闭流。这样,每次调用此方法,都会在现有内容基础上追加新的数据。 `readFileInputStream`方法用于读取文件内容。同样,它使用`Context.openFileInput()`打开一个`...

Global site tag (gtag.js) - Google Analytics