8

byte[]..これを使用して a を base64 文字列 に変換しようとすると、org.apache.commons.codec.binary.Base64私の Java コードは次のようになります。

 base64String = Base64.encodeBase64URLSafeString(myByteArray);

しかし、生成された文字列に無効な文字がいくつか表示されbase64ます..スクリーンショット

____生成された文字列にこれらの行が表示されるのはなぜbase64ですか? 有効な文字列ですか?生成された文字列の長さは 4 で割り切れることに注意してください。

4

5 に答える 5

2

使用する

String sCert = javax.xml.bind.DatatypeConverter.printBase64Binary(pk); 
于 2016-04-01T17:24:58.227 に答える
1

これは役に立つかもしれません

sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
encoder.encode(byteArray);
于 2012-07-23T12:52:12.570 に答える
0

base64 には (少なくとも) 2 つのフレーバーがあります。英数字に加えて「+」と「/」を使用するオリジナルのものと、「-」と「_」を使用する「URL セーフ」のものです。 URLで囲むことができます(またはファイル名として使用できます)。

「url セーフ モード」になっている base64 エンコーダーを使用しているようです。

URLSafeString() の apache の javadoc

ああ、'_'base64 アルファベットの最後の文字であるため、文字列が"____"0xffffff ... のチャンクをエンコードしていることを意味します。「AAAAAA」が連続するゼロがたくさんあることを意味するのと同じです。

これが通常のケースであると確信したい場合は、お気に入りの 16 進数のダンパー/エディターを選択して、バイナリ入力がどのように見えるかを確認してください。

于 2012-07-23T12:52:49.280 に答える
-1

以下のプロセスにより、バイト配列をBase64に変換できます

 // Convert a byte array to base64 string
    byte[] bytearray= new byte[]{0x12, 0x23};
    String s = new sun.misc.BASE64Encoder().encode(bytearray);

    // Convert base64 string to a byte array
    bytearray = new sun.misc.BASE64Decoder().decodeBuffer(s);

編集:

リンクコモンズApacheの下のガイドを確認してください

于 2012-07-23T12:53:20.417 に答える