try {
new BitSet();
byte[] packetData = new byte[receivePacket.getLength()];
packetData = receivePacket.getData();
bits = BitSet.valueOf(packetData);
byte_header = Arrays.copyOfRange(packetData,0,12);
byte_header_id = Arrays.copyOfRange(byte_header,0,2);
byte_header_flags = Arrays.copyOfRange(byte_header,2,4);
BitSet bits_packetData = BitSet.valueOf(receivePacket.getData());
BitSet bits_header = BitSet.valueOf(byte_header);
BitSet bits_header_flags = BitSet.valueOf(byte_header_flags);
System.out.println("packetData length: " + receivePacket.getLength());
System.out.println("byte_header length: " + byte_header.length);
System.out.println("byte_header_flags length: " + byte_header_flags.length);
System.out.println("bits_packetData length: " + bits_packetData.size());
System.out.println("bits_header length: " + bits_header.size());
System.out.println("bits_header_flags length: " + bits_header_flags.size());
} catch (Exception ex) { ex.printStackTrace(); }
Background: The above is taking data from a UDP packet sent to the client, and extracting data from the packet. The seemingly anomalous output is as follows:
packetData length: 44
byte_header length: 12
byte_header_flags length: 2
bits_packetData length: 384
bits_header length: 64
bits_header_flags length: 64
The only numbers that look correct on here are the packetData length, byte_header_length, and byte_header_flags_length. packetData bytes * 8 bits does not equal 384. byte_header_length * 8 bits does not equal 64, and byte_header_flags_length * 8 bits surely does not equal 64!!
Can anyone please clarify what I am doing wrong, and point me in the right direction?
Thanks!