تبدیل رشته به باینری در جاوا

سلام دوستان در این سری از آموزش برنامه نویسی جاوا به آموزش تبدیل رشته به باینری در جاوا می پردازیم در این آموزش انواع مختلفی از داده مانند رشته و عدد صحیح را به باینری تبدیل می کنیم در ادامه با ما همراه باشید تا نحوه تبدیل رشته یا عدد صحیح به باینری را یاد گیرد.
 

محتویات کد زیر :

  • تبدیل عدد صحیح به باینری و عکس آن  – Convert int to binary and vice versa
  • تبدیل رشته به باینری و عکس آن   –  Convert string to int and vice versa

 

تبدیل عدد صحیح (int) به باینری (Binary) و معکوس آن

در ادامه مثالی از تبدیل عدد صحیح به باینری قرار می دهیم.

import java.util.*;
class DectoBin
{
public static void main(String arg[])
{
    Scanner sc=new Scanner(System.in);
    System.out.println("Enter a decimal number");
    int n=sc.nextInt();
    int  bin[]=new int[100];
    int i = 0;
    while(n > 0)
    {
    bin[i++] = n%2;
       n = n/2;
    }
   System.out.print("Binary number is : ");
    for(int j = i-1;j >= 0;j--)
   {
       System.out.print(bin[j]);
   }
}
}

در بالا بعد از دریافت ورودی از کاربر خارج قسمت مربوط به آن در یک آرایه قرار میدهیم و سپس آن را بر دو تقسیم کرده و در متغیر دریافت شده ورودی قرار میدهیم این کار به تعداد طول رشته ما و به تعداد تقسیم های متوالی تکرار خواهد شد و در نهایت خروجی چاپ می شود.
خروجی کد بالا همانند زیر خواهد بود.

Enter a decimal number
4
Binary number is : 100

حالا شاید بخواهید از binary (باینری) به عدد صحیح برسید این کار را می توان مثل آب خوردن انجام داد کافی است از کد زیر استفاده کنید.

int foo = Integer.parseInt("1001", 2);

اگر بخواهید از کد منطقی استفاده کنید کد زیر نیز باینری را به عدد صحیح تبدیل می کند.

static int binaryToInt (String binary){
    char []cA = binary.toCharArray();
    int result = 0;
    for (int i = cA.length-1;i>=0;i--){
        if(cA[i]=='1') result+=Math.pow(2, cA.length-i-1);
    }
    return result;
}

تبدیل رشته (String) به باینری (Binary)

حالا برای اینکه رشته را به binary (باینری) تبدیل کنید می توانید از کد زیر استفاده کنید.

String s = "foo";
  byte[] bytes = s.getBytes();
  StringBuilder binary = new StringBuilder();
  for (byte b : bytes)
  {
     int val = b;
     for (int i = 0; i < 8; i++)
     {
        binary.append((val & 128) == 0 ? 0 : 1);
        val <<= 1;
     }
     binary.append(' ');
  }
  System.out.println("'" + s + "' to binary: " + binary);

خروجی کد بالا همانند زیر است.

'foo' to binary: 01100110 01101111 01101111

اگر از زبان فارسی در رشته خود استفاده می کنید از کد زیر استفاده کنید تا مشکلی پیش نیاد.

byte[] encoded = "こんにちは、世界!".getBytes(StandardCharsets.UTF_8);

یک راه حل ساده تر نیز برای تبدیل وجود دارد.

public class Test {
    public String toBinary(String text) {
        StringBuilder sb = new StringBuilder();
        for (char character : text.toCharArray()) {
            sb.append(Integer.toBinaryString(character) + "\n");
        }
        return sb.toString();
    }
}

برای عکس این عمل یعنی Binary (باینری) به String (رشته) از کد زیر استفاده کنید.

int charCode = Integer.parseInt(binariess, 2);
String str = new Character((char)charCode).toString();

روش بالا به radix معروف است.
یک راه ساده دیگر نیز وجود دارد که همانند زیر است.

public static String bytesToAlphabeticString(byte[] bytes) {
    CharBuffer cb = ByteBuffer.wrap(bytes).asCharBuffer();
    return cb.toString();
}

و در نهایت راه یک خطی آن هم به شکل زیر است.

String text = new String(bytes, 0, bytes.length, "ASCII");

 
این آموزش هم به پایان رسید.
موفق و پیروز باشید.

مطالعه بیشتر