/* * Binary class * * Written by Damir Perovic, Zagreb, Croatia. * Freeware, distributed "As Is". No warranties of any kind. * No part of this program is permitted for copy or use of any kind. * Copyright 2000 by Damir Perovic */ class Binary { // array of bits boolean[] bits; /********************************************** * CONSTRUCTORS **********************************************/ // constructor - create array of boolean Binary(int size) { // create arrays bits = new boolean[size]; // set false as default clearAll(); } // constructor - create array of boolean and assing values Binary(boolean[] value) { // create arrays bits = new boolean[value.length]; // set values for (int i=0; i> i) & 1) == 1; } } // change values - set from string void set(String value) { byte[] b = value.getBytes(); try { for (int i=0; i void rotateRight() { boolean bit = bits[bits.length-1]; for (int i=bits.length-1; i>0; i--) { bits[i] = bits[i-1]; } bits[0] = bit; } /********************************************** * GET METHODS **********************************************/ boolean getBit(int index) { return bits[index]; } boolean[] getArray() { return bits; } int getLength() { return bits.length; } /********************************************** * PUBLIC BIT ARRAY METHODS **********************************************/ static public void and(Binary source1, Binary source2, Binary dest) { for (int i=0; i=0; i-=4) { int b = 0; // every four bits one hex-a digit try { if (bits[i - 0]) b += 1; if (bits[i - 1]) b += 2; if (bits[i - 2]) b += 4; if (bits[i - 3]) b += 8; } catch (IndexOutOfBoundsException e) {} s += Character.forDigit(b, 16); } return new StringBuffer(s).reverse().toString(); } public String toText() { String s = ""; for (int i=bits.length-1; i>=0; i-=8) { int b = 0; // every eight bits one char try { if (bits[i - 0]) b += 1; if (bits[i - 1]) b += 2; if (bits[i - 2]) b += 4; if (bits[i - 3]) b += 8; if (bits[i - 4]) b += 16; if (bits[i - 5]) b += 32; if (bits[i - 6]) b += 64; if (bits[i - 7]) b += 128; } catch (IndexOutOfBoundsException e) {} s += (char) b; } return new StringBuffer(s).reverse().toString(); } }