Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package zaschita1;
- import java.io.File;
- import java.util.Scanner;
- import java.io.FileWriter;
- import java.nio.charset.StandardCharsets;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.List;
- public class Zaschita1 {
- public static void encoding() throws Exception{
- System.out.print("Encoding: \n");
- Scanner sc = new Scanner(new File("src//zaschita1//input_word.txt"));
- String word = sc.nextLine();
- System.out.println("Phrase: " + word);
- String[] binAscii = new String[word.length()];
- for (int i = 0; i < binAscii.length; i++ ){
- binAscii[i] = String.format("%16s", Integer.toBinaryString((int) word.charAt(i))).replace(' ', '0');
- System.out.println(word.charAt(i) + " " + (int) word.charAt(i) + " " + binAscii[i]);
- }
- StringBuilder binAsciiConcat = new StringBuilder();//add
- int binAcounter = 0;// add суммарно сколько в слове бит
- for(int i = 0; i < binAscii.length; i ++){//add
- binAsciiConcat.append(binAscii[i]);//add
- }
- List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//input_text.txt"), StandardCharsets.UTF_8);
- FileWriter writer = new FileWriter("src//zaschita1//output.txt", false);
- //List<String> lines - строки текста,
- //binAscii[String] - массив с двоичным преддставлением слова
- System.out.println("lines size: " + lines.size() + " binAsciiConcat: " + binAsciiConcat.toString());
- // go:
- for(int i = 0; i < lines.size(); i ++){
- System.out.println("lines: " + i + ": " + lines.get(i));
- String[] textString = lines.get(i).split(" ");
- for(int g = 0; g < textString.length; g ++){
- if(binAcounter <= binAsciiConcat.toString().length() - 1){
- if(binAsciiConcat.toString().charAt(binAcounter) == '1'){
- writer.append(textString[g] + ' ');
- }
- else { // = 0
- writer.append(textString[g]);
- }
- System.out.println("binAcounter binAsciiConcat.toString().length() - 1: " + binAcounter + " " + binAsciiConcat.toString().length());
- binAcounter++;
- writer.append(' ');
- //if(binAcounter == binAsciiConcat.toString().length() - 1){
- // break go;
- //}
- }
- else {
- writer.append(textString[g] + ' ');
- }
- }
- writer.append('\n');
- }
- writer.flush();
- }
- public static void decoding() throws Exception{
- System.out.println("\nDecoding: ");
- List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//output.txt"), StandardCharsets.UTF_8);
- StringBuilder sb = new StringBuilder();
- for(String line: lines){
- if(line.endsWith(" ")) {
- sb.insert(sb.length(), '1');
- }
- // else if(line.endsWith(Character.toString('\u200B'))){
- else if(line.charAt(line.length() - 1) == '\u200B'){
- sb.insert(sb.length(), '0');
- }
- else break;
- }
- int start = 0, end = 16;
- int[] asciiCode = new int[sb.toString().length() / 16];
- StringBuilder res = new StringBuilder();
- for (int i = 0; i < asciiCode.length; i++ ){
- asciiCode[i] = (char)Integer.parseInt(sb.toString().substring(start, end), 2);
- start += 16;
- end += 16;
- System.out.println("ascii: " + asciiCode[i]);
- res.insert(res.length(), (char)asciiCode[i]);
- //System.out.println("char: " + res.toString());
- }
- FileWriter writerOutput = new FileWriter("src//zaschita1//output_word.txt", false);
- writerOutput.write(res.toString());
- writerOutput.flush();
- }
- public static void main(String[] args) throws Exception{
- encoding();
- //decoding();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement