首頁 > Java > java教程 > 主體

使用Java中的getBytes(encoding)方法將字串轉換為位元組數組

WBOY
發布: 2023-08-27 13:13:06
轉載
691 人瀏覽過

使用Java中的getBytes(encoding)方法將字串轉換為位元組數組

在 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”類別來指定編碼。我們為每種方法提供了詳細的程式碼範例和輸出。

以上是使用Java中的getBytes(encoding)方法將字串轉換為位元組數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!