title: Java and Binary data in the context of sockets
body: <p>Java newbie here. Are there any helper functions to serialize data in and out of byte arrays? I am writing a Java package that implements a network protocol. So I have to write some typical variables like a version (1byte), sequence Number (long) and binary data (bytes) in a loop. How do I do this in Java? Coming from C I am thinking of creating a byte array of the required size and then since there is no memcpy() I am converting the long into a temporary byte array and then copying it into the actual byte array.  It seems so inefficient and also really error prone. Is there a class I could use to marshall and unmarshall parameters to a byte array?</p>
  
  <p>Also why does all the Socket classes only deals with char[] and not byte[]? A socket by definition has to deal with binary data also. How is this done in Java? </p>
  
  <p>I am sure what I am missing is the Java mindset. Appreciate it if some one can point it to me.</p>
  
  <p>EDIT: I did look at DataOutputStream and DataInputStream but I cannot convert the bytes to a String not to a byte[] which means the information might be lost in the conversion to write to a socket. </p>
  
  <ul>
  <li>Pav</li>
  </ul>