How to remove first 4 bytes from a byte array in Java?
20,648
Solution 1
If you want to skip the first four bytes change this,
for (int j = 0; j < bytes.length; j++) {
to something like
for (int j = 4; j < bytes.length; j++) {
Or you might use String.substring(int)
bytesToHex(byteArr).substring(8); // <-- skip the first 4 bytes
Solution 2
You could use Arrays.copyOfRange method to filter the unwanted bytes and save the result to a new byte array.
byte[] filteredByteArray = Arrays.copyOfRange(byteArr, 4, byteArr.length);
Author by
Miller
Updated on July 09, 2022Comments
-
Miller almost 2 years
I have a byte array named
byteArr[]
.I need to remove first 4 bytes from it.My code is shown below. Here I use the byte array to store the input string.I got some unwanted byte with the output i.e the first four bytes is not needed from the fifth onwards is correct. My program is to take id from respected rfid tag using an rfid machine.public class Serverc { final protected static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; j++) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); } public static void connection() throws IOException { ServerSocket ss = new ServerSocket(9888);//exce ss.setSoTimeout(300000000);//exce System.out.println("Waiting for client on port " + ss.getLocalPort() + "..."); while (true) { Socket server = ss.accept();//exce System.out.println("Just connected to " + server.getRemoteSocketAddress()); int available = 0; DataInputStream in = new DataInputStream(server.getInputStream());//exce int input = 0; //BufferedReader br = new BufferedReader(in); byte byteArr[] = new byte[28]; try { //read till the end of stream //while((input = in.available()) != -1) while ((input = in.read(byteArr)) != -1) { System.out.println("Size read is " + input); System.out.println("Data is " + bytesToHex(byteArr)); } //System.out.println("inside finally"); server.close();//exce //System.out.println("outside finally"); } catch (SocketTimeoutException ex) { System.out.println("Socket timed out!"); } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String args[]) throws IOException { Serverc obj = new Serverc(); obj.connection(); } }
Here is my console
Waiting for client on port 9888... Just connected to /106.208.71.50:61532 Size read is 28 Data is 55000016910001DB00FB63ABEEAFC1EC888F10263410050711148F3500000000 Size read is 28 Data is 55000016910001DB00FB63ABEEAFC1EC888F10263410050711148F3500000000 Size read is 28 Data is 55000016910001DB00FB63ABEEAFC1EC888F10263410050711148F3500000000 Size read is 28 Data is 55000016910001DB00FB63ABEEAFC1EC888F10263410050711148F3500000000 Size read is 28 Data is 55000016910001DB00FB63ABEEAFC1EC888F10263410050711148F3500000000
Here I need to remove 55000016 from the output. Advance thanks