title: Java - Convert Human Readable Size to Bytes
body: <p>I've found lots of information about converting raw byte information into a human-readable format, but I need to do the opposite, i.e. convert the String "1.6 GB" into the long value 1717990000. Is there an in-built/well-defined way to do this, or will I pretty much have to roll my own?</p>
  
  <p>[Edit]: Here is my first stab...</p>
  
  <pre><code>static class ByteFormat extends NumberFormat {
      @Override
      public StringBuffer format(double arg0, StringBuffer arg1, FieldPosition arg2) {
          // TODO Auto-generated method stub
          return null;
      }
  
      @Override
      public StringBuffer format(long arg0, StringBuffer arg1, FieldPosition arg2) {
          // TODO Auto-generated method stub
          return null;
      }
  
      @Override
      public Number parse(String arg0, ParsePosition arg1) {
          return parse (arg0);
      }
  
      @Override
      public Number parse(String arg0) {
          int spaceNdx = arg0.indexOf(" ");
          double ret = Double.parseDouble(arg0.substring(0, spaceNdx));
          String unit = arg0.substring(spaceNdx + 1);
          int factor = 0;
          if (unit.equals("GB")) {
              factor = 1073741824;
          }
          else if (unit.equals("MB")) {
              factor = 1048576;
          }
          else if (unit.equals("KB")) {
              factor = 1024;
          }
  
          return ret * factor;
      }
  }
  </code></pre>