title: How do you convert binary data to Strings and back in Java?
body: <p>I have binary data in a file that I can read into a byte array and process with no problem.  Now I need to send parts of the data over a network connection as elements in an XML document.  My problem is that when I convert the data from an array of bytes to a String and back to an array of bytes, the data is getting corrupted.  I've tested this on one machine to isolate the problem to the String conversion, so I now know that it isn't getting corrupted by the XML parser or the network transport.</p>
  
  <p>What I've got right now is</p>
  
  <pre><code>byte[] buffer = ...; // read from file
  // a few lines that prove I can process the data successfully
  String element = new String(buffer);
  byte[] newBuffer = element.getBytes();
  // a few lines that try to process newBuffer and fail because it is not the same data anymore
  </code></pre>
  
  <p>Does anyone know how to convert binary to String and back without data loss?</p>
  
  <p>Answered:  Thanks Sam.  I feel like an idiot.  I had this answered yesterday because my SAX parser was complaining.  For some reason when I ran into this seemingly separate issue, it didn't occur to me that it was a new symptom of the same problem.</p>
  
  <p>EDIT:  Just for the sake of completeness, I used the <a href="http://commons.apache.org/codec/apidocs/org/apache/commons/codec/binary/Base64.html" rel="noreferrer">Base64</a> class from the <a href="http://commons.apache.org/" rel="noreferrer">Apache Commons</a> <a href="http://commons.apache.org/codec/" rel="noreferrer">Codec</a> package to solve this problem.</p>