Knute Johnson wrote:
Lew wrote:
(Beware: Strings are terrible homes for binary data because they have
text character encoding.)
If it is encoding you want, use Base64 encoding. That produces byte
arrays as output, from which you can build Strings. Yecch.
Make sure to specify the character encoding for your Strings (e.g.,
"ASCII"), and that it's the same on both ends of your code/decode
actions. Strings are a terrible way to store binary data.
<http://jakarta.apache.org/commons/codec/>
Lew:
How do they code public/private keys into ASCII text? That's got to
be able to handle all 256 values. Does that have a name?
That's what Base64 does. It maps all binary values into a byte encoding
scheme that works for ASCII Strings.
From
<http://en.wikipedia.org/wiki/Base64encoded>
Base64 or quadrosexagesimal is a positional notation using a base of
64. It is the largest power-of-two base that can be represented using
only printable ASCII characters.
It uses an offset, so the six-bit value 0 is 'A', 1 is 'B', the digit 26
is 'a', digit 61 is '9', It is similar to uu{en|de}code in that it
represents every binary value as a series of characters representing
base 64 (6-bit) digits. It's similar to how we use hex notation to
represent base 16 (4-bit) chunks using printable characters.
So yes, Base64 is one encoding that handles all possible binary values,
converting them to printable ASCII characters. I feel these are the
safest to use when you must use a String to hold binary data.
See also:
<http://jakarta.apache.org/commons/codec/userguide.html>
<http://www.ietf.org/rfc/rfc2045.txt>
Thanks Lew.