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();
}
}