关于Java中byte[] 和 String互相转换问题

网友投稿 467 2022-08-31


关于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[]转换成Shttp://tring[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("UTFhttp://-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; +http://+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;

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:pytorch 自动混合精度训练(pytorch是什么)
下一篇:Django之开发restful接口(django restful API 代码自动生成)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~