当前位置: 首页 > news >正文

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互相转换的时候你应该注意输入数据的类型

  1. 当使用String类的时候,将String作为输入类型
  2. 当使用Base64类的时候,使用byte数组作为输入类型

如有问题请在评论留言

Happy Learning !!

 

转载于:https://www.cnblogs.com/keeplearnning/p/7003415.html

相关文章:

  • 1.5在linux下新增大于2T的硬盘在linux下挂载操作
  • Mybatis在oracle批量更新
  • visual studio for mac在线安装网络错误
  • Angular--ui-router的使用
  • Linux 软件安装
  • 文本样式
  • 第11章 服务管理
  • SQL Server 锁实验(INSERT加锁探究)
  • OpenCV探索之路(十四):绘制点、直线、几何图形
  • 27部优秀的黑客纪录片
  • Tomcat指定JDK路径(Linux+Windows)
  • MVC和普通三层架构的区别
  • ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)...
  • Dropdownlist中用viewmodel传值处理方法
  • 玲珑杯 1137 - Sin your life(数学)
  • [译] React v16.8: 含有Hooks的版本
  • Android Studio:GIT提交项目到远程仓库
  • css属性的继承、初识值、计算值、当前值、应用值
  • extract-text-webpack-plugin用法
  • miaov-React 最佳入门
  • 开源SQL-on-Hadoop系统一览
  • 跨域
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 一份游戏开发学习路线
  • 最简单的无缝轮播
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #etcd#安装时出错
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (阿里云万网)-域名注册购买实名流程
  • (二十三)Flask之高频面试点
  • (汇总)os模块以及shutil模块对文件的操作
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)Linux Shell编程——输入输出重定向
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转) Face-Resources
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET的微型Web框架 Nancy
  • @Data注解的作用
  • [ vulhub漏洞复现篇 ] Grafana任意文件读取漏洞CVE-2021-43798
  • [.net]官方水晶报表的使用以演示下载
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [22]. 括号生成
  • [3D基础]理解计算机3D图形学中的坐标系变换
  • [AutoSar]BSW_Com02 PDU详解
  • [BZOJ2281][SDOI2011]黑白棋(K-Nim博弈)
  • [CTO札记]如何测试用户接受度?
  • [EWS]查找 文件夹
  • [FUNC]判断窗口在哪一个屏幕上
  • [Kubernetes]4. 借助腾讯云TKE快速创建Pod、Deployment、Service部署k8s项目
  • [LeetCode]-Spiral Matrix III 螺旋矩阵