2015-09-17 5 views
0

пожалуйста, любой может мне помочь преобразовать 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 и так далее

Configuration: encrption - JDK version 1.8.0_40

Введите Ваш PLAINTEXT приветствовать Введите Ваш KeyText . Конкатенированные данные: 123welcome [49, 50, 51, 119, 101, 108, 99, 111, 109, 101]

Процесс завершен.

+1

'Integer.toBinaryString()'? – fge

ответ

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); 
} 
+0

при добавлении этой строки [String binStr = Integer.toBinaryString (ascciiText)] дает мне эту ошибку ошибки: несовместимые типы: byte [] не может быть преобразован в int –

+0

Причина этого довольно проста: 'Integer.toBinaryString()' ожидает числовой тип как параметр, а не 'Array', как показано в примере. Вам придется перебирать массив и преобразовывать каждый байт самостоятельно – Paul

+0

вы можете сделать это для меня –

1

Simialr on @ Paul's solution, но написанный другим способом.

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(); 
}