关于Java中byte[] 和 String互相转换问题
通过用例学习Java中的byte数组和String互相转换,这种转换可能在很多情况需要,比如IO操作,生成加密hash码等等。
除非觉得必要,否则不要将它们互相转换,他们分别代表了不同的数据,专门服务于不同的目的,通常String代表文本字符串,byte数组针对二进制数据
通过String类将String转换成byte[]或者byte[]转换成String
用String.getBytes()方法将字符串转换为byte数组,通过String构造函数将byte数组转换成String
注意:这种方式使用平台默认字符集
package com.bill.example; public class StringByteArrayExamples { public static void main(String[] args) { //Original String String string = "hello world"; //Convert to byte[] byte[] bytes = string.getBytes(); //Convert back to String String s = new String(bytes); //Check converted string against original String System.out.println("Decoded String : " + s); } }
输出:
hello world
通过Base64将String转换成byte[]或者byte[]转换成String[Java 8]
可能你已经了解 Base64 是一种将二进制数据编码的方式,正如UTF-8和UTF-16是将文本数据编码的方式一样,所以如果你需要将二进制数据编码为文本数据,那么Base64可以实现这样的需求
从Java 8 开始可以使用Base64这个类
import java.util.Base64; public class StringByteArrayExamples { public static void main(String[] args) { //Original byte[] byte[] bytes = "hello world".getBytes(); //Base64 Encoded String encoded = Base64.getEncoder().encodeToString(bytes); //Base64 Decoded byte[] decoded = Base64.getDecoder().decode(encoded); //Verify original content System.out.println( new String(decoded) ); } }
输出:
hello world
总结
在byte[]和String互相转换的时候你应该注意输入数据的类型
- 当使用String类的时候,将String作为输入类型
- 当使用Base64类的时候,使用byte数组作为输入类型
补充:下面看下java的byte[]与String相互转换
String转byte[]
byte[] sInput = new byte[0]; try { // 可以指定编码,默认也只UTF-8 sInput = "这是内容".getBytes("UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
byte[]转String
// 这里sInput是上面byte[],也是可以指定编码,默认也是UTF-8 String str = new String(sInput, "UTF-8")
byte[]打印到控制台看
org.bouncycastle.pqc.math.linearalgebra.ByteUtils.toBinaryString(sInput) // 这个方法的源码 public static String toBinaryString(byte[] var0) { String var1 = ""; for(int var2 = 0; var2 < var0.length; ++var2) { byte var3 = var0[var2]; for(int var4 = 0; var4 < 8; ++var4) { int var5 = var3 >>> var4 & 1; var1 = var1 + var5; } if (var2 != var0.length - 1) { var1 = var1 + " "; } return var1; }
到此这篇关于Java中byte[] 和 String互相转换的文章就介绍到这了,更多相关java byte[] 和 String互相转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)