将数组字节转换为二进制

时间:2015-09-17 10:18:21

标签: java

请任何人都可以帮我转换ascciiText到二进制,如49有二进制00110001和48是00110010等等 这是我的代码

import java.lang.String;
import java.util.Scanner;
import java.lang.*;
import java.io.*;
import java.util.*;

public class encrption {

public static void main(String[] args){

     // INPUT: KeyText   (StrKey).
    // OUTPUT: Ciphertext (ConcatenatedData).
   //String ConcatenatedData; 


    // Read data from user.
    Scanner in = new Scanner(System.in);
    System.out.println("Enter Your PlainText");
    String StrValue = in.nextLine();
    System.out.println("Enter Your KeyText ");
    String StrKey = in.nextLine();

  // Print the Concatenated Data.

 String ConcatenatedData = StrKey.concat(StrValue);
       System.out.println("the Concatenated Data is :"+ConcatenatedData);

  // Convering the Concatenated data to Ascii data.

 try { 
  byte[] asciiText = ConcatenatedData.getBytes("US-ASCII");


    System.out.println(Arrays.toString(asciiText)); 

}

 catch (java.io.UnsupportedEncodingException e)
     { e.printStackTrace(); }

请任何人可以帮我转换ascciiText系列为二进制,如49有二进制00110001和48是00110010等等

  

配置:encrption - JDK版本1.8.0_40

输入您的PlainText 欢迎 输入您的KeyText 123 连锁数据是:123欢迎 [49,50,51,119,101,108,99,111,109,101]

流程已完成。

2 个答案:

答案 0 :(得分:1)

由于byte未提供任何方法,因此您必须使用Integer

byte[] b = ...;//you're array
String binStr = "";

for(byte v : b)
    binStr += Integer.toBinaryString(v);

或者您可以编写自己的方法。也不会太难:

String toBinary(byte b){
    char[] binArr = new char[8];

    //if a bit is 1, emplace '1' at the respective position in the array, else 0
    for(int i = 0 ; i < 8 ; i++)
        binArr[7 - i] = (b & (1 << i)) == 0 ? '0' : '1';

    return new String(binArr);
}

答案 1 :(得分:1)

关于@Paul的解决方案的Simialr,但写了另一种方式。

String toBinary(byte b) {
    StringBuilder sb = new StringBuilder(8);

    for(int i = 7 ; i >= 0 ; i--)
        sb.append((char) ('0' + ((b >> i) & 1));

    return sb.toString();
}