بکندباز

متد getBytes()‎ در جاوا

متد getBytes()‎ رشته را به دنباله ای از بایت ها رمزگذاری می کند و آن را در یک آرایه بایت ذخیره می کند.

سینتکس متد getBytes()‎ عبارت است از:

string.getBytes()‎
string.getBytes(Charset charset)
string.getBytes(String charsetName)

در اینجا، string یک شیء از کلاس Stringاست.

متد getBytes()‎ یک آرایه بایتی را برمی گرداند.


1. getBytes()‎ بدون هیچ پارامتر

اگر هیچ پارامتری را ارسال نکنید، getBytes()‎رشته را با استفاده از charset پیش فرض پلتفرم رمزگذاری می کند.

مثال: getBytes()‎ بدون هیچ پارامتر

import java.util.Arrays;

class Main {
  public static void main(String[] args) {

    String str = "Java";
    byte[] byteArray;

    // convert the string to a byte array
    // using platform's default charset
    byteArray = str.getBytes()‎;
    System.out.println(Arrays.toString(byteArray));
  }
}

خروجی

[74، 97، 118، 97]

توجه: ما از کلاس Arrays در مثال بالا برای چاپ آرایه بایت به شکل قابل خواندن استفاده کرده ایم. و ارتباطی به getBytes()‎ ندارد.


2. getBytes()‎ با پارامتر CharSet

موارد مختلفی برای CharSetدر جاوا موجود است:

  • UTF-8 – فرمت تبدیل UCS هشت بیتی
  • UTF-16 – فرمت تبدیل UCS شانزده بیتی
  • UTF-16BE – فرمت تبدیل UCS شانزده بیتی، ترتیب بایت big-endian
  • UTF-16LE – فرمت تبدیل UCS شانزده بیتی، ترتیب بایت little-endian
  • US-ASCII –  کد ASCII هفت بیتی
  • ISO-8859-1 – الفبای لاتین ISO شماره 1

این موارد به صورت رشته موجود هستند. برای تبدیل این رشته ها به Charset باید از کلاس CharSet  و متد forName استفاده کنیم تا رشته های بالا به CharSet تبدیل شوند.

مثال: getBytes()‎ با پارامتر CharSet

import java.util.Arrays;
import java.nio.charset.Charset;

class Main {
  public static void main(String[] args) {

    String str = "Java";
    byte[] byteArray;

    // using UTF-8 for encoding
    byteArray = str.getBytes(Charset.forName("UTF-8"));
    System.out.println(Arrays.toString(byteArray));

    // using UTF-16 for encoding
    byteArray = str.getBytes(Charset.forName("UTF-16"));
    System.out.println(Arrays.toString(byteArray));
  }
}

خروجی

[74، 97، 118، 97]
[-2، -1، 0، 74، 0، 97، 0، 118، 0، 97]

توجه: در برنامه فوق، java.nio.charset.Charset را برای استفاده از CharSet وارد کرده ایم . و کلاس Arrays را وارد کرده ایم تا آرایه بایت را به شکل قابل خواندن چاپ کند.


3. getBytes()‎ با پارامتر String

همچنین می توانیم نوع رمزگذاری برای getBytes()‎ را مستقیماً از طریق رشته ها مشخص کنیم. وقتی از متد getBytes()‎ با این روش استفاده می کنیم، باید کد را در داخل بلوک try…catch قرار دهیم. چرا که در غیر اینصورت، در صورتی که کد رشته مورد نظر اشتباه باشد، برنامه خطایی در خروجی ارسال کرده و متوقف می شود.

مثال: getBytes()‎ با پارامتر رشته

import java.util.Arrays;

class Main {
  public static void main(String[] args) {

    String str = "Java";
    byte[] byteArray;

    try {
      byteArray = str.getBytes("UTF-8");
      System.out.println(Arrays.toString(byteArray));

      byteArray = str.getBytes("UTF-16");
      System.out.println(Arrays.toString(byteArray));

      // wrong encoding
      // throws an exception
      byteArray = str.getBytes("UTF-34");
      System.out.println(Arrays.toString(byteArray));

    } catch (Exception e) {
      System.out.println(e + " encoding is wrong");
    }

  }
}

خروجی

[74, 97, 118, 97]
[-2, -1, 0, 74, 0, 97, 0, 118, 0, 97]
java.io.UnsupportedEncodingException: UTF-34 encoding is wrong

توجه: ما java.util.Arrays را وارد کرده ایم تا آرایه بایت را به شکل قابل خواندن چاپ کنیم و ارتباطی به getBytes()‎ ندارد.

zohreh

مدیر وب سایت بکندباز

دیدگاه‌ها

*
*