簡體   English   中英

將數組字節轉換為二進制

[英]Convert array Byte To Binary

請任何人可以幫助我將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,依此類推

配置:加密-JDK版本1.8.0_40

輸入您的PlainText歡迎詞輸入您的KeyText 123級聯數據是:123welcome [49、50、51、119、101、108、99、111、109、101]

流程完成。

由於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);
}

Simialr在@Paul的解決方案上寫了另一種方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM