diff options
author | CGantert345 <57003061+CGantert345@users.noreply.github.com> | 2021-02-25 11:02:26 +0100 |
---|---|---|
committer | CGantert345 <57003061+CGantert345@users.noreply.github.com> | 2021-02-25 11:02:26 +0100 |
commit | 425bd35c736b7e1c0dbe5b3f9162e195b3be6018 (patch) | |
tree | bc4668aa125fb0a15518d464a1738c6b05e56d07 /src/net/gcdc/asn1/uper/ByteBitBuffer.java | |
parent | issuerOnLine changed from int to Integer as it is optional (diff) | |
download | UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.tar UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.tar.gz UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.tar.bz2 UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.tar.lz UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.tar.xz UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.tar.zst UIC-barcode-425bd35c736b7e1c0dbe5b3f9162e195b3be6018.zip |
Diffstat (limited to 'src/net/gcdc/asn1/uper/ByteBitBuffer.java')
-rw-r--r-- | src/net/gcdc/asn1/uper/ByteBitBuffer.java | 271 |
1 files changed, 0 insertions, 271 deletions
diff --git a/src/net/gcdc/asn1/uper/ByteBitBuffer.java b/src/net/gcdc/asn1/uper/ByteBitBuffer.java deleted file mode 100644 index e55d9d5..0000000 --- a/src/net/gcdc/asn1/uper/ByteBitBuffer.java +++ /dev/null @@ -1,271 +0,0 @@ -package net.gcdc.asn1.uper; - - - -public class ByteBitBuffer implements BitBuffer { - - byte[] bytes; - byte[] mask = new byte[] { - (byte) 0b1000_0000, - 0b0100_0000, - 0b0010_0000, - 0b0001_0000, - 0b0000_1000, - 0b0000_0100, - 0b0000_0010, - 0b0000_0001, - }; - - boolean isFinite; - - int mark; - int position; - int limit; - - - @Override public boolean get(int index) { - if (index < 0) { - throw new IndexOutOfBoundsException("Index " + index + " is less than 0"); - } else if (index >= limit) { - throw new IndexOutOfBoundsException("Index " + index + " violates the limit " + limit); - } - boolean result = (bytes[index / 8] & mask[index % 8]) != 0; - return result; - } - - @Override public boolean get() { - boolean result = get(position); - position++; - return result; - } - - private void grow() { - byte[] newbytes = new byte[2 * bytes.length]; - System.arraycopy(bytes, 0, newbytes, 0, bytes.length); - bytes = newbytes; - } - - @Override public BitBuffer put(int index, boolean element) { - if (bytes.length <= index / 8) { - if (isFinite) { throw new IndexOutOfBoundsException(); } - else { grow(); } - } - if (element) { - bytes[index / 8] |= mask[index % 8]; - } else { - bytes[index / 8] &= ~mask[index % 8]; - } - return this; - } - - @Override public BitBuffer put(boolean element) { - put(position, element); - position++; - limit = limit < position ? position : limit; // TODO: should it be here? - return this; - } - - @Override public BitBuffer putByte(byte element) { - for (int i = 0; i < 8; i++) { - put((element & mask[i]) != 0); - } - return this; - } - - @Override public BitBuffer putByteArray(int index, byte[] data) { - - for (int l = 0; l < data.length;l++) { - for (int i = 0; i < 8; i++) { - put((data[l] & mask[i]) != 0); - } - } - return this; - } - - - @Override public byte getByte() { - byte result = 0; - for (int i = 0; i < 8; i++) { - result |= (get() ? 1 : 0) << (7 - i); - } - return result; - } - - @Override public int limit() { - return limit; - } - - @Override public String toBooleanString(int startIndex, int length) { - StringBuilder sb = new StringBuilder(length); - for (int i = startIndex; i < startIndex + length; i++) { - sb.append(get(i) ? "1" : "0"); - } - return sb.toString(); - } - - @Override public int capacity() { - return isFinite ? bytes.length * 8 : Integer.MAX_VALUE; - } - - @Override public int position() { - return position; - } - - @Override public int remaining() { - return limit - position; - } - - public ByteBitBuffer(byte[] backingArray) { - this.bytes = backingArray; - this.isFinite = true; - } - - private ByteBitBuffer(int initialCapacity) { - this.bytes = new byte[initialCapacity]; - this.isFinite = false; - } - - public static ByteBitBuffer allocate(int lengthInBits) { - return new ByteBitBuffer(new byte[(lengthInBits + 7) / 8]); - } - - public static ByteBitBuffer createInfinite() { - return new ByteBitBuffer(64); - } - - @Override public BitBuffer flip() { - limit = position; - position = 0; - return this; - } - - @Override public String toBooleanStringFromPosition(int startIndex) { - return toBooleanString(startIndex, position-startIndex); - } - - @Override public byte[] array() { - return bytes; - } - - @Override - public void putInteger(int position, int length,int number) { - String s = Integer.toBinaryString(number); - if (s.length() > length) { - //value is to large - return; - } - - for (int i = 0;i < length;i++){ - int index = position + i; - this.put(index,false); - } - - - int startIndex = position + length - s.length(); - for (int i = 0;i < s.length();i++){ - /* - * i = max --> index = position + length - 1 - * i = 0 --> index = position + - */ - int index = startIndex + i; - if (s.charAt(i) == '1') { - this.put(index, true ); - } else { - this.put(index, false); - } - } - - } - - @Override - public void putChar5String(int position, int length, String s) { - - String upperCaseString = s.toUpperCase(); - int offset = 0; - for (int i = 0; i < s.length() ; i++) { - char character = upperCaseString.charAt(i); - int intValue = (int) character - 32; - if (intValue > -1 && intValue < 64) { - this.putInteger(position + offset,5, intValue); - offset = offset + 5; - } else { - this.putInteger(position + offset,5,0); - position = position + 5; - } - } - } - - @Override - public void putChar6String(int position, int length, String s) { - - String upperCaseString = s.toUpperCase(); - int offset = 0; - for (int i = 0; i < s.length() ; i++) { - char character = upperCaseString.charAt(i); - int intValue = (int) character - 32; - if (intValue > -1 && intValue < 64) { - this.putInteger(position + offset,6, intValue); - offset = offset + 6; - } else { - this.putInteger(position + offset,6,0); - position = position + 6; - } - } - } - - @Override - public int getInteger(int position, int length) { - StringBuffer sb = new StringBuffer(); - for (int i = 0;i < length;i++){ - if (this.get(position + i)) { - sb.append("1"); - } else { - sb.append("0"); - } - } - return Integer.parseInt(sb.toString(), 2); - } - - @Override - public String getChar6String(int position, int length) { - - StringBuilder stringBuilder = new StringBuilder(); - - int chars = length / 6; - - for (int i = 0; i < chars; i++) { - int newPosition = position + i * 6; - - int x = this.getInteger(newPosition, 6); - x = x + 32; - - char c = (char) x; - stringBuilder.append(c); - - } - - return stringBuilder.toString().trim(); - } - - @Override - public String getChar5String(int position, int length) { - - StringBuilder stringBuilder = new StringBuilder(); - - int chars = length / 5; - - for (int i = 0; i < chars; i++) { - int newPosition = position + i * 5; - - int x = getInteger(newPosition, 5); - x = x + 42; - - char c = (char) x; - stringBuilder.append(c); - - } - - return stringBuilder.toString().trim(); - } - -} |