Advertisement
ibragimova_mariam

2 задание стенография переделала

Sep 27th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.46 KB | None | 0 0
  1. package zaschita1;
  2. import java.io.File;
  3. import java.util.Scanner;
  4. import java.io.FileWriter;
  5. import java.nio.charset.StandardCharsets;
  6. import java.nio.file.Files;
  7. import java.nio.file.Paths;
  8. import java.util.List;
  9.  
  10. public class Zaschita1 {
  11.  
  12. public static void encoding() throws Exception{
  13. System.out.print("Encoding: \n");
  14.  
  15. Scanner sc = new Scanner(new File("src//zaschita1//input_word.txt"));
  16. String word = sc.nextLine();
  17. System.out.println("Phrase: " + word);
  18.  
  19. String[] binAscii = new String[word.length()];
  20. for (int i = 0; i < binAscii.length; i++ ){
  21. binAscii[i] = String.format("%16s", Integer.toBinaryString((int) word.charAt(i))).replace(' ', '0');
  22. System.out.println(word.charAt(i) + " " + (int) word.charAt(i) + " " + binAscii[i]);
  23. }
  24.  
  25. StringBuilder binAsciiConcat = new StringBuilder();//add
  26. int binAcounter = 0;// add суммарно сколько в слове бит
  27. for(int i = 0; i < binAscii.length; i ++){//add
  28. binAsciiConcat.append(binAscii[i]);//add
  29. }
  30.  
  31. List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//input_text.txt"), StandardCharsets.UTF_8);
  32. FileWriter writer = new FileWriter("src//zaschita1//output.txt", false);
  33.  
  34. //List<String> lines - строки текста,
  35. //binAscii[String] - массив с двоичным преддставлением слова
  36.  
  37. System.out.println("lines size: " + lines.size() + " binAsciiConcat: " + binAsciiConcat.toString());
  38.  
  39. // go:
  40. for(int i = 0; i < lines.size(); i ++){
  41. System.out.println("lines: " + i + ": " + lines.get(i));
  42. String[] textString = lines.get(i).split(" ");
  43. for(int g = 0; g < textString.length; g ++){
  44. if(binAcounter <= binAsciiConcat.toString().length() - 1){
  45. if(binAsciiConcat.toString().charAt(binAcounter) == '1'){
  46. writer.append(textString[g] + ' ');
  47. }
  48. else { // = 0
  49. writer.append(textString[g]);
  50. }
  51. System.out.println("binAcounter binAsciiConcat.toString().length() - 1: " + binAcounter + " " + binAsciiConcat.toString().length());
  52. binAcounter++;
  53. writer.append(' ');
  54. //if(binAcounter == binAsciiConcat.toString().length() - 1){
  55. // break go;
  56. //}
  57. }
  58. else {
  59. writer.append(textString[g] + ' ');
  60. }
  61. }
  62. writer.append('\n');
  63. }
  64.  
  65. writer.flush();
  66.  
  67. }
  68. public static void decoding() throws Exception{
  69. System.out.println("\nDecoding: ");
  70. List<String> lines = Files.readAllLines(Paths.get("src//zaschita1//output.txt"), StandardCharsets.UTF_8);
  71. StringBuilder sb = new StringBuilder();
  72.  
  73. for(String line: lines){
  74. if(line.endsWith(" ")) {
  75. sb.insert(sb.length(), '1');
  76. }
  77. // else if(line.endsWith(Character.toString('\u200B'))){
  78. else if(line.charAt(line.length() - 1) == '\u200B'){
  79. sb.insert(sb.length(), '0');
  80. }
  81. else break;
  82. }
  83.  
  84. int start = 0, end = 16;
  85. int[] asciiCode = new int[sb.toString().length() / 16];
  86.  
  87. StringBuilder res = new StringBuilder();
  88. for (int i = 0; i < asciiCode.length; i++ ){
  89. asciiCode[i] = (char)Integer.parseInt(sb.toString().substring(start, end), 2);
  90. start += 16;
  91. end += 16;
  92. System.out.println("ascii: " + asciiCode[i]);
  93. res.insert(res.length(), (char)asciiCode[i]);
  94. //System.out.println("char: " + res.toString());
  95. }
  96.  
  97. FileWriter writerOutput = new FileWriter("src//zaschita1//output_word.txt", false);
  98. writerOutput.write(res.toString());
  99. writerOutput.flush();
  100. }
  101.  
  102. public static void main(String[] args) throws Exception{
  103. encoding();
  104. //decoding();
  105. }
  106.  
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement