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

 更新时间:2022年01月26日 15:15:08   作者:Jiakeqiang  
这篇文章主要介绍了Java中byte[] 和 String互相转换问题,通过用例给大家介绍了通过String类将String转换成byte[]或者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互相转换的时候你应该注意输入数据的类型

  1. 当使用String类的时候,将String作为输入类型
  2. 当使用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互相转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMVC拦截器超详细解读

    SpringMVC拦截器超详细解读

    SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。 依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用
    2022-07-07
  • 详解spring 配置的两种方式:JAVA配置和注解配置

    详解spring 配置的两种方式:JAVA配置和注解配置

    这篇文章主要介绍了详解spring 配置的两种方式:JAVA配置和注解配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • 如何简单的理解依赖注入详解

    如何简单的理解依赖注入详解

    一直对依赖注入理解不清楚,最近突然理解了,所以下面这篇文章主要给大家介绍了关于如何简单的理解依赖注入的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • 老生常谈 Java中的继承(必看)

    老生常谈 Java中的继承(必看)

    下面小编就为大家带来一篇老生常谈 Java中的继承(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • JAVA中使用JSON进行数据传递示例

    JAVA中使用JSON进行数据传递示例

    本篇文章主要介绍了JAVA中使用JSON进行数据传递示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Java中instanceof关键字实例讲解

    Java中instanceof关键字实例讲解

    大家好,本篇文章主要讲的是Java中instanceof关键字实例讲解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • maven-assembly-plugin报红无法加载报错:Plugin ‘maven-assembly-plugin:‘ not found

    maven-assembly-plugin报红无法加载报错:Plugin ‘maven-assembly-plugin

    maven-assembly-plugin是一个常用的打包插件,但是在使用过程中经常会遇到各种报错,本文就来介绍一下maven-assembly-plugin报红无法加载报错,具有一定的参考价值
    2023-08-08
  • java-collection中的null,isEmpty用法

    java-collection中的null,isEmpty用法

    这篇文章主要介绍了java-collection中的null,isEmpty用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java并发编程之栅栏(CyclicBarrier)实例介绍

    Java并发编程之栅栏(CyclicBarrier)实例介绍

    这篇文章主要介绍了Java并发编程之栅栏(CyclicBarrier)实例介绍,栅栏类似闭锁,但是它们是有区别的,需要的朋友可以参考下
    2015-04-04
  • 详解Java中运算符及用法

    详解Java中运算符及用法

    这篇文章主要介绍了详解Java中运算符以及相关的用法讲解,一起跟着小编学习下吧。
    2017-12-12

最新评论