请任何人都可以帮我转换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]
流程已完成。
答案 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();
}