Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Getting bytes from the bytes array

Posted on 2006-10-21
5
Medium Priority
?
210 Views
Last Modified: 2010-03-31
Hi Friends,
I receive data from the server and I store it in a bytes array.Now I need to retrieve bytes from the array,like first byte says code[1 byte],second says lastname[4 bytes],third says fname[30 bytes],last byte says if there is one more entry,and the same syntax needs to be followed again....I tried this but its not working...any help would be appreciated.


import java.io.*;
import java.nio.*;
 
public class btest{
public static void main(String[] ar){
 try{
 
                String data1 ="1232 3 3 444 222 111 444 555555 2222222 1111111 3333 dssssddd";
                byte[] data = data1.getBytes("ASCII");
            int length = data.length;
            System.out.println("length is:"+length);
            ByteBuffer buff = ByteBuffer.wrap(data);
 
            byte[] fbyte = new byte[1];
            byte[] lname = new byte[4];
            byte[] fname = new byte[30];
            byte[] lbyte = new byte[1];
            
            buff.get(fbyte, 0,1);
            String received0 = new String(fbyte,"ASCII");
                System.out.println("Data Recd: " + received0);
            buff.position(1);
            
            buff.get(ref_no, 1,4);            
            String received1 = new String(lname,"ASCII");
            buff.position(4);
 
            buff.get(uname, 4,34);
              String received2 = new String(fname,"ASCII");
                System.out.println("Data Recd: " + received2);
            buff.position(34);
 
            buff.get(lbyte, 34,35);
            String received3 = new String(lbyte,"ASCII");
                System.out.println("Data Recd: " + received3);
 
}catch(Exception e){e.printStackTrace();}
 
}
}

0
Comment
Question by:harmeek_80
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
5 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 17782874
You don't need to move anything or calculation positions - the BB will do that for you

buff.get(fbyte);
String received0 = new String(fbyte,"ASCII");
System.out.println("Data Recd: " + received0);

buff.get(ref_no);


etc.
0
 
LVL 92

Expert Comment

by:objects
ID: 17782939
>           buff.get(ref_no, 1,4);          

your problem is that those values refer to where in ref_no to place the bytes :)

What you want can also easily be done without even needing to create a ByteBuffer, and use Syste.arraycopy to copy the bytes directly from the byte array
0
 
LVL 86

Assisted Solution

by:CEHJ
CEHJ earned 200 total points
ID: 17782950
It's actually easier to do it with a BB - it's been designed especially for this sort of thing
0
 
LVL 92

Accepted Solution

by:
objects earned 400 total points
ID: 17782969
you also need to remove those calls to position (they are relative gets) and do it in a loop
there are a variety of other minor prob also with the code
try something like:

boolean done = false;
while (!done) {
          buff.get(fbyte);
          String received0 = new String(fbyte,"ASCII");
          System.out.println("Data Recd: " + received0);
         
          buff.get(fname);
          String received1 = new String(fname,"ASCII");
          System.out.println("Data Recd: " + recieved1);
 
          buff.get(lname);
          String received2 = new String(lname,"ASCII");
          System.out.println("Data Recd: " + recieved2);

          buff.get(lbyte);
          String received3 = new String(lbyte,"ASCII");
          System.out.println("Data Recd: " + received3);
          done = !recieved3.equals(MORE_DATA);
}
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 17784478
Not sure how that answer added anything to the one i'd already given, although it did repeat it
0

Featured Post

Build and deliver software with DevOps

A digital transformation requires faster time to market, shorter software development lifecycles, and the ability to adapt rapidly to changing customer demands. DevOps provides the solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
Suggested Courses

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question