- - PR -
Base64デコードによって含まれる終端コードの除去について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-11-02 09:46
初めて投稿させて頂きます。
目的: Base64エンコード・デコードを使用して、CとJavaで情報の受け渡しをしています。 問題: CでBase64エンコードされたものをJavaでBase64デコードしたいのですが、 sun.misc.BASE64Decoder#decodeBuffer(String) org.apache.commons.codec.binary.Base64#decodeBase64(byte[]) どちらを使用しても、戻り値として取得するbyte[]に、 終端コードが含まれてしまうため、元の文字列との単純な比較ではfalseになってしまいます。 // 元の文字列 String expected = ""; // エンコードされた文字列 String target = ""; // デコードした文字列を取得 byte[] target_byte = Base64.decodeBase64(target.getBytes("UTF-8")); if(expected.equals(new String(target_byte,"UTF-8")) return true; 生成されたtarget_byteから後ろ2バイト取り除くと、trueが返ってきますが、 強引な感じがしますので、どうにかしたいと考えています。 ご意見頂けたらと思います。 C側で生成されたbase64エンコード文字列には、終端コードが含まれていません。 以上 宜しくお願いします。 | ||||
|
投稿日時: 2006-11-02 21:49
「終端コード」とは何ですか?
C側でBase64エンコードする際に余分なものを付けているということは? 元の文字列の例とBase64エンコード結果を例示できませんか? | ||||
|
投稿日時: 2006-11-03 02:47
どっちやねん、とつっこんぢゃいますが。C側でのエンコードで終端を 含まないのに、なんでJava側のデコード時に含んじゃうの? base64の、例えば。 MIIsldfj83w という文字列をJavaでエンコードするなら。 MIIsldfj83w\\r\\n ぢゃだめぢゃん。データ違うし。 MIIsldfj83w をJava側に入力しないと。単に設計がおかしいと思うけど。「文字列」を Java側に入力するという設計がおかしい。 え゛?設計じゃない?最近はそれぐらい指示しないと理解されない。。。 |
1