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数组作为输入类型

原文地址:https://www.cnblogs.com/longchang/p/11059716.html

时间: 2024-10-11 16:41:17

Java - byte[] 和 String互相转换的相关文章

java byte 16进制转换

整型转16进制: int devIdInt = Integer.parseInt(devId); String devIdString = Integer.toHexString(devIdInt); 16进制转为字节: byte devBin = (byte) Integer.parseInt(devIdString, 16); byte devBin =Integer.valueOf(devIdString, 16).byteValue(); byte devBin =Byte.parseB

C#中byte[]与string的转换

C#中byte[]与string的转换 1. System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding(); byte[] inputBytes =converter.GetBytes(inputString); string inputString = converter.GetString(inputBytes); 2. string inputString = System.Convert.ToBase6

C# Byte[] 转String 无损转换

转载请注明出处 http://www.cnblogs.com/Huerye/ /// <summary> /// string 转成byte[] /// </summary> /// <param name="hexString"></param> /// <returns>byte[]</returns> private byte[] strToToHexByte(string hexString) { hexS

[转]关于网络通信,byte[]和String的转换问题

最近的项目中要使用到把byte[]类型转换成String字符串然后通过网络发送,但发现发现出去的字符串和获取的字符串虽然是一样的,但当用String的getBytes()的方法得到的byte[]跟原来的byte[]是不一样的. 看如下代码: bytebytes[] = new byte[] { 50, 0, -1, 28, -24 }; String string = new String(bytes); byte[] ret = string.getBytes(); 查看ret的数据发现是50

Java—— 一点关于String的转换

在Java学习中,恐怕我们遇到的最多的就是有关String与其他类型的转换了,我们来看一张图: 我们看到对于8种基本数据类型,除去byte和short类型没有外,其他的都有,值得注意的是可以把char类型的数组转成string(这个我们经常用).可以看到这些方法都是static的,因此都是使用 String.方法名()直接调用.另外,想必大家都知道Java中的所有类都继承object类(包括自己定义的类),所以所有的引用类型都是可以使用valueOf方法的. 举个例子:说明一下大家经常用的cha

java byte[]和base64互相转换

1.方式一 import java.io.UnsupportedEncodingException; import java.util.Base64; // byte[]转base64 String base64Str = Base64.getEncoder().encodeToString(byteArray); // base64转byte[] byte[] byteArray = Base64.getDecoder().decode(base64Str); 说明:使用jdk自带的Base6

C#将byte[]转换为string

A. 首先列出网上搜索的一些信息: 方法1: System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding(); byte[] inputBytes =converter.GetBytes(inputString); string inputString = converter.GetString(inputBytes); 方法2: string inputString = System.Convert.ToBas

java里面byte数组和String字符串转换

//string 转 byte[] String str = "问题"; byte[] srtbyte = str.getBytes(); // byte[] 转 string String res = new String(srtbyte); System.out.println(res); 当然还有可以设定编码方式的 String str = "问题"; byte[] srtbyte = null; try { srtbyte = str.getBytes(&q

用java String类的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解决乱码问题

Java中String的数据是如何存储的,查看源代码就可以知道,String的数据是存储在char[] value这样一个成员变量中的,char类型的大小在java中是2个字节 我们还知道,现在普遍使用的unicode版本是UCS-2,就是使用2个字节表示一个字符的unicode版本,这就对上了,java使用的就是UCS-2标准,所以,String中的value中存储的都是一个个数字 比如’你’的unicode编码是4f60,看下面的测试代码 char c = '你'; System.out.p