تبدیل رشته به باینری در جاوا
سلام دوستان در این سری از آموزش برنامه نویسی جاوا به آموزش تبدیل رشته به باینری در جاوا می پردازیم در این آموزش انواع مختلفی از داده مانند رشته و عدد صحیح را به باینری تبدیل می کنیم در ادامه با ما همراه باشید تا نحوه تبدیل رشته یا عدد صحیح به باینری را یاد گیرد.
محتویات کد زیر :
- تبدیل عدد صحیح به باینری و عکس آن – Convert int to binary and vice versa
- تبدیل رشته به باینری و عکس آن – Convert string to int and vice versa
تبدیل عدد صحیح (int) به باینری (Binary) و معکوس آن
در ادامه مثالی از تبدیل عدد صحیح به باینری قرار می دهیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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]); } } } |
در بالا بعد از دریافت ورودی از کاربر خارج قسمت مربوط به آن در یک آرایه قرار میدهیم و سپس آن را بر دو تقسیم کرده و در متغیر دریافت شده ورودی قرار میدهیم این کار به تعداد طول رشته ما و به تعداد تقسیم های متوالی تکرار خواهد شد و در نهایت خروجی چاپ می شود.
خروجی کد بالا همانند زیر خواهد بود.
1 2 3 | Enter a decimal number 4 Binary number is : 100 |
حالا شاید بخواهید از binary (باینری) به عدد صحیح برسید این کار را می توان مثل آب خوردن انجام داد کافی است از کد زیر استفاده کنید.
1 | int foo = Integer.parseInt("1001", 2); |
اگر بخواهید از کد منطقی استفاده کنید کد زیر نیز باینری را به عدد صحیح تبدیل می کند.
1 2 3 4 5 6 7 8 | 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 (باینری) تبدیل کنید می توانید از کد زیر استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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); |
خروجی کد بالا همانند زیر است.
1 | 'foo' to binary: 01100110 01101111 01101111 |
اگر از زبان فارسی در رشته خود استفاده می کنید از کد زیر استفاده کنید تا مشکلی پیش نیاد.
1 | byte[] encoded = "こんにちは、世界!".getBytes(StandardCharsets.UTF_8); |
یک راه حل ساده تر نیز برای تبدیل وجود دارد.
1 2 3 4 5 6 7 8 9 | 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 (رشته) از کد زیر استفاده کنید.
1 2 | int charCode = Integer.parseInt(binariess, 2); String str = new Character((char)charCode).toString(); |
روش بالا به radix معروف است.
یک راه ساده دیگر نیز وجود دارد که همانند زیر است.
1 2 3 4 | public static String bytesToAlphabeticString(byte[] bytes) { CharBuffer cb = ByteBuffer.wrap(bytes).asCharBuffer(); return cb.toString(); } |
و در نهایت راه یک خطی آن هم به شکل زیر است.
1 | String text = new String(bytes, 0, bytes.length, "ASCII"); |
این آموزش هم به پایان رسید.
موفق و پیروز باشید.