1. Java / Говнокод #16345

    +71

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    import java.io.IOException;
    import java.io.RandomAccessFile;
    //класс для работы с беззнаковым типом
    public class UnsignedTypes {
     private RandomAccessFile nameOfFile;
        //конструктор
        UnsignedTypes(RandomAccessFile f) {
            nameOfFile = f;
        }
        // Статическая функция которая на вход
        // принимает знаковую переменную(любого типа)
        //а на выходе возращает беззнаковый long
        //если ваш компилятор ругается не забудьте
        // превести вашу переменную к типу long явно
        // UnsignedTypes.convert((long)yourvariable)
        static public long convert(long signedvariable){
          long ans=0;
            for(int i=0;i<64;i++){
             ans+=(int)Math.pow(2,i)*(Math.abs(signedvariable % 2));
                signedvariable>>=1;
            }
            return ans;
        }
        //функция чтения WORD(unsigned short)
        public long readWord() throws IOException {
           byte[] mas = new byte[2];
            nameOfFile.readFully(mas,0,2);
            return read(mas,2);
        }
        //функция чтения DWORD(unsigned int)
        public long readDWord() throws IOException {
            byte[] mas = new byte[4];
            nameOfFile.readFully(mas,0,4);
            return read(mas, 4);
        }
        //функция используеая для работы двух верхних функций
        private static long read(byte mas[],int numberOfByte) {
            long ans = 0;
            for (int i = 0; i <numberOfByte; i++) {
                for (int j = 0; j < 8; j++) {
                    //System.out.print(Math.abs(mas[i] % 2));
                    ans+=(int)Math.pow(2,j+i*8)*(Math.abs(mas[i] % 2));
                    mas[i] >>= 1;
                }
                //System.out.print(" ");
            }
            return ans;
        }
        //функция чтения 1байтового Char из бинарного файла
        public char readChar() throws IOException {
            char ans =0;
            byte b=nameOfFile.readByte();
            ans=(char) b;
            return ans;
        }
    }

    Нуфф сказал.

    http://cybern.ru/java-antivirus.html

    Запостил: gost, 15 Июля 2014

    Комментарии (4) RSS

    • > беззнаковый long
      Ну-ну.
      Ответить
    • > ans+=(int)Math.pow(2,j+i*8)*(Math.abs(ma s[i] % 2));
      Прелестное байтоёбство... нет, даже битоёбство.
      Ответить
      • >mas[i] % 2
        mas[i] & 1 - вот это битоёбство.
        Ответить
        • Да тут компилятор вроде бы должен справиться сам... А вот с флоатоёбским pow() он так просто не разделается.
          Ответить

    Добавить комментарий