使用 getBytes(encoding) 方法在 Java 中將字串轉換為位元組陣列
在 Java 程式設計的世界裡,可以使用 `getBytes()` 函式將字串轉換為位元組陣列。此過程的結果是獲得起始字串的位元組陣列表示形式,編碼方式由方法的規範決定。使用 `getBytes()` 函式,有兩種不同的方法可以將 Java 中的字串轉換為位元組陣列。第一種方法是使用 JVM 的預設字元集編碼,這是一種編碼技術。第二種方法取決於提供的特定字元集編碼,所使用的編碼取決於相關應用程式的要求。
在本篇討論中,我們將仔細研究這兩種方法,併為每種方法提供程式碼實現和輸出示例。
使用的方法
本文討論了三種不同的方法,用於在 Java 中將字串轉換為位元組陣列。
方法 1 − 第一種方法使用預設字元集編碼。在字串物件上呼叫 `getBytes()` 方法,不指定編碼,從而使用預設字元集編碼。當轉換不需要特定編碼時,此方法適用。
方法 2 − 第二種方法使用 `getBytes()` 方法的特定字元集編碼。當需要與預設編碼不同的編碼進行轉換時,此方法很有用。編碼的選擇取決於應用程式的特定要求。
方法 3 − 第三種方法使用 Java 中的 `ByteBuffer` 類。此類提供將字串轉換為位元組陣列以及反向轉換的方法。`Charset` 類用於指定要用於轉換的編碼。當處理複雜的字元編碼或需要更可定製的轉換時,此方法很有幫助。
`getBytes(encoding)` 方法接受一個字串引數 `encoding`,該引數指定要使用的字元編碼方案。該方法返回一個位元組陣列,該陣列以指定的編碼表示字串。該方法的語法如下:
語法
byte[] byteArray = str.getBytes(encoding);
其中 `str` 是要轉換的字串,`encoding` 是編碼方案的名稱。
演算法
要在 Java 中將字串轉換為位元組陣列,您可以按照以下步驟操作:
步驟 1 − 獲取要轉換為位元組陣列的字串。
步驟 2 − 確定要用於轉換的編碼。如果未指定編碼,則將使用預設字元集編碼。
步驟 3 − 在字串物件上呼叫 `getBytes()` 方法並將編碼作為引數傳遞。這將返回字串的位元組陣列表示形式。
步驟 4 − 將位元組陣列儲存在變數中以備將來使用。
步驟 5 − 如果 JVM 不支援指定的編碼,則 `getBytes()` 方法將丟擲 `UnsupportedEncodingException`。您可以使用 try-catch 塊處理此異常。
步驟 6 − 使用 `Arrays.toString()` 方法以可讀格式列印位元組陣列。
步驟 7 − 如有必要,使用 `new String(byteArray, encoding)` 方法將位元組陣列轉換回字串。
步驟 8 − 現在可以將轉換後的位元組陣列用於進一步傳輸或處理。
需要注意的是,根據應用程式的具體要求,可能需要其他步驟或修改。
方法 1
這種在 Java 中將字串轉換為位元組陣列的方法使用預設字元集編碼,這是 JVM 預設使用的編碼。此方法簡單直接,但如果應用程式需要特定編碼,則可能不適用。
示例
import java.util.Arrays;
public class StringToByteArray {
public static void main(String[] args) {
String str = "Hello, world!";
byte[] byteArray = str.getBytes();
System.out.println("Byte array using default charset encoding: " + Arrays.toString(byteArray));
}
}
輸出
Byte array using default charset encoding: [72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33]
方法 2
這種在 Java 中將字串轉換為位元組陣列的方法允許我們指定要使用的特定字元集編碼。這使我們可以更好地控制用於轉換的編碼,並確保位元組陣列與目標系統相容。
以下是相同的程式程式碼。
示例
import java.util.Arrays;
import java.io.UnsupportedEncodingException;
public class StringToByteArray {
public static void main(String[] args) {
String str = "Hello, world!";
String encoding = "UTF-16";
byte[] byteArray = null;
try {
byteArray = str.getBytes(encoding);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("Byte array using " + encoding + " encoding: " + Arrays.toString(byteArray));
}
}
輸出
Byte array using UTF-16 encoding: [-2, -1, 0, 72, 0, 101, 0, 108, 0, 108, 0, 111, 0, 44, 0, 32, 0, 119, 0, 111, 0, 114, 0, 108, 0, 100, 0, 33, 0]
在此輸出中,我們可以看到與預設編碼方法相比,位元組陣列開頭額外包含兩個位元組 (-2 和 -1)。這兩個位元組表示 UTF-16 編碼的位元組順序。
方法 3
這種在 Java 中將字串轉換為位元組陣列的方法使用 `ByteBuffer` 類來提供將字串轉換為位元組陣列以及反向轉換的方法。當我們需要使用 `ByteBuffer` 類提供的方法對位元組陣列執行其他操作時,此方法很有用。
示例
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Arrays;
public class StringToByteArray {
public static void main(String[] args) {
String str = "Hello, world!";
Charset charset = Charset.forName("UTF-8");
ByteBuffer byteBuffer = charset.encode(str);
byte[] byteArray = byteBuffer.array();
System.out.println("Byte array using ByteBuffer class: " + Arrays.toString(byteArray));
}
}
輸出
Byte array using ByteBuffer class: [72, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100, 33, 0]
結論
總而言之,在 Java 中將字串轉換為位元組陣列可以透過 `getBytes()` 方法實現。有兩種方法,一種使用預設字元集編碼,另一種使用特定字元集編碼。方法的選擇取決於應用程式的要求。`ByteBuffer` 類也可以用於此轉換,使用 `Charset` 類指定編碼。我們為每種方法提供了詳細的程式碼示例和輸出。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP