美文网首页Java学习笔记
Java中字节和字符的转换

Java中字节和字符的转换

作者: 顽童大了已没那么笨 | 来源:发表于2016-11-16 19:58 被阅读92次

在Java的内存中进行字节和字符的数据类型相互转换非常常见,也有多种方法进行转换,在此处为大家一一介绍。

1. String

String类提供了转换到字节的方法,也提供了字节转换到字符的构造方法,代码入下所示:

String str = "这是一段字符串";
byte[] bytes = str.getBytes("UTF-8");

String newStr = new String(bytes, "UTF-8");

2.ByteToCharConverter & CharToByteConverter

这两个类分别提供converAll()方法实现字节和字符的转换,代码如下所示:

ByteToCharConverter charConverter = ByteToCharConverter.getConverter("UTF-8");
char[] c = charConverter.convertAll(byteArray);

CharToByteConverter byteConverter = CharToByteConverter.getConverter("UTF-8");
byte[] b = byteConverter.convertAll(c);

3.Charset

方法2中的两个类已经被Charset取代,Charset提供encode以及decode方法,分别对应char[]到byte[]的编码已经byte[]到char[]的编码,代码如下:

String str = "这是一段字符串";

Charset charset = Charset.forName("UTF-8");
ByteBuffer byteBuffer = charset.encode(str);
CharBuffer charBuffer = charset.decode(byteBuffer);

4.ByteBuffer

ByteBuffer提供char和byte之间的软转换,他们之间的转换不需要编码与解码,只是把一个16bit的char拆分成2个8bit的byte表示,他们的实际值并没有被修改,仅仅是数据的数据类型做了转换,代码如下:

ByteBuffer heapByteBuffer = ByteBuffer.allocate(1024);
ByteBuffer byteBuffer = heapByteBuffer.putChar(c);

相关文章

  • Java中字节和字符的转换

    在Java的内存中进行字节和字符的数据类型相互转换非常常见,也有多种方法进行转换,在此处为大家一一介绍。 1. S...

  • Java IO之转换流的使用

    简介 转换流提供了在字节流和字符流之间的转换。 Java API提供了两个转换流:InputstreamReade...

  • IO输入/输出流(三)

    前言: Java中对数据进行持久化操作 转换流: 字节流与字符流之间转换的桥梁,可以用于改变字符的编码格式,编码统...

  • Java IO详解

    1. Java中字节流和字符流 字节(Byte)和字符(Character)的大小: 1 byte = 8bit[...

  • No.16 转换流InputStreamReader/Outpu

    简介 在java.io除了字节流/字符流之外,还存在一组字节流-字符流的转换类。1.OutputStreamWri...

  • Java IO和NIO

    Java IO Java IO面向流,按照流中的最小数据单元可以分为字节流和字符流,顾名思义分别以字节和字符作为数...

  • 写网关专用

    java二进制,字节数组,字符,十六进制,BCD编码转换/** */

  • Java 中字节流与字符流的区别?

    Java 中字节流与字符流的区别? 知乎高赞回答。参考:Java 中字节流与字符流的区别?[https://www...

  • JAVA中的字符和字节

    文章大纲:1.为什么要编码?2.各种编码集介绍3.UTF-8编码规则介绍4.编码所涉及场景5.相关笔试题答案和分析...

  • java十七(字符字节流的转换)

    * InputStreamReader:字节输出转换为字符输出 * OutStreamWriter:字节输入转换为...

网友评论

    本文标题:Java中字节和字符的转换

    本文链接:https://www.haomeiwen.com/subject/yxirpttx.html