Java 中將字串轉換為位元組陣列,以及將位元組陣列轉換為字串

今天我們將學習如何在Java中將字串轉換為位元組陣列。同時,我們還將學習如何在Java中將位元組陣列轉換為字串。

字串轉換為位元組陣列

我們可以使用String類別的getBytes()方法,將字串編碼為一系列位元,使用平台的預設字元集。此方法有多載,我們還可以傳遞Charset作為參數。以下是一個簡單的程式,演示如何在Java中將字串轉換為位元組陣列。

package com.journaldev.util;

import java.util.Arrays;

public class StringToByteArray {

	public static void main(String[] args) {
		String str = "PANKAJ";
		byte[] byteArr = str.getBytes();
		// 印出位元組陣列元素
		System.out.println("String to byte array: " + Arrays.toString(byteArr));
	}
}

下面的圖像顯示了執行上述程式時的輸出。我們還可以使用以下代碼獲取位元組陣列。

byte[] byteArr = str.getBytes("UTF-8");

但是,如果我們提供Charset名稱,那麼我們將不得不捕捉UnsupportedEncodingException例外或將其拋出。更好的方法是使用Java 1.7中引入的StandardCharsets類別,如下所示。

byte[] byteArr = str.getBytes(StandardCharsets.UTF_8);

這就是在Java中將字串轉換為位元組陣列的所有不同方式。

Java byte array to String

讓我們看一個簡單的程式,展示如何在Java中將byte陣列轉換為String。

package com.journaldev.util;

public class ByteArrayToString {

	public static void main(String[] args) {
		byte[] byteArray = { 'P', 'A', 'N', 'K', 'A', 'J' };
		byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };

		String str = new String(byteArray);
		String str1 = new String(byteArray1);

		System.out.println(str);
		System.out.println(str1);
	}
}

下面的圖像顯示了上述程式產生的輸出。你有注意到我在創建byte陣列時提供了char嗎?這是因為自動裝箱,char ‘P’被轉換為byte陣列中的80。這就是為什麼對於byte陣列轉換為字符串,輸出是相同的原因。String也有一個構造函數,我們可以提供byte陣列和Charset作為參數。因此,下面的代碼也可以用於在Java中將byte陣列轉換為String。

String str = new String(byteArray, StandardCharsets.UTF_8);

String類還有一個方法,可以將byte陣列的子集轉換為String。

byte[] byteArray1 = { 80, 65, 78, 75, 65, 74 };
String str = new String(byteArray1, 0, 3, StandardCharsets.UTF_8);

上面的代碼是完全正確的,’str’值將是’PAN’。這就是關於在Java中將byte陣列轉換為String的全部內容。

你可以從我們的GitHub存儲庫中查看更多陣列範例。

參考:getBytes API文件

Source:
https://www.digitalocean.com/community/tutorials/string-byte-array-java