1

ここに問題があります。プロジェクトで MongoDB を使用しているため、16 進数のアルファベットのみを使用して 24 文字の ObjectId があります。私は自分のプロジェクトでプロバイダーに http 要求を作成しています。この要求では、コールバックの目的で一意の ID を入力する必要がありますが、プロバイダーはこの ID に20 文字しか許可していません。理由はわかりません。

だから、私の質問は、16文字のアルファベット(ヘキサ)で、16 ^ 24の可能なモンゴIDがありますよね?HTTP リクエストで 64 個の異なる文字 ([0-9][az][AZ]-_) に基づく Id を使用すると仮定すると、間違っている場合は訂正しますが、64^20 の可能な ID があると思います。技術的には、可能なすべての MongoDB ObjectId を対応する ID でエンコードすることは可能ですよね?

古典的な Base64 エンコーディングのようですが、不思議なことに、これは期待どおりに機能しません。生成された文字列が元の文字列よりも大きいため、Base64 エンコーディングがどのように機能するかを理解していなかったと思います...

これはすべて可能だと思いますか、それとも私は何かを完全に見逃しましたか?

前もって感謝します!

編集: 私の同僚の 1 人は、動作するように見える何かを試しました。Javaコードは次のとおりです。

byte[] decodedHex = Hex.decodeHex("53884594e4b0695f366f8128".toCharArray());
byte[] encodedHexB64 = Base64.encodeBase64(decodedHex);
System.out.println(new String(encodedHexB64)); // --> U4hFlOSwaV82b4Eo

私が無視する理由により、これを行うことは同じではありません:

String anotherB64 = Base64.encodeBase64String("53884594e4b0695f366f8128".getBytes());
System.out.println(anotherB64);

そしてそれは印刷します:NTM4ODQ1OTRlNGIwNjk1ZjM2NmY4MTI4

4

1 に答える 1