Base64String のような C# メソッドですが、英数字のみ (プラスやスラッシュは含まれません)

StackOverflow https://stackoverflow.com/questions/933503

質問

Convert.ToBase64String と同様に機能するが、英数字出力以外は何も生成しない C# メソッドはありますか?

ありがとう!

役に立ちましたか?

解決

おそらく、Base32 エンコーディングのようなものの使用を検討しているでしょう。C# には Base32 エンコーダ/デコーダがあります ここ マイケル・ジャグノカーボ著。大文字と数字の組み合わせを使用します。

StackOverflow にも関連するディスカッションがあります ここ.

編集: 万が一、これが URL セーフ関連の Base64 エンコーディングの場合は、Base64 を実行して、「+」を「-」に、「/」を「_」に置き換えてください。しかし、あなたはそれを望んでいないかもしれないと思います。

他のヒント

答えは今少し古くなっています。将来サーチャーの利益のために:C#で、今これを処理するための最良の方法です。

byte[] b; // fill your byte array somehow
string s = System.Web.HttpServerUtility.UrlTokenEncode(b);

これは(あなたがあなたの質問にコメントで本当に後だった言ったことである)URLセーフであるBase64でエンコードされた文字列を返します。

あなたはそれを再び使用してデコードすることができ、あなたはそれを推測します:

byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);

あなたは+置き換えるか、可能な場合、いくつかの事前定義された文字列をスラッシュすることができます。

「+」と「/」の代わりに「_」と「 - 」

ベース64(クエリ文字列で使用するための)共通の変異体は、使用することです。おそらく、各端部にReplace(...)のビットは、仕事をするのでしょうか?

あなたはあなたの16進文字列を与えるBitConverter.ToString()を使用することができます。しかし、結果の文字列は、Base64エンコーディングよりも長くなります。

Iエンコーダのようなそのような探していたと私が使用 https://github.com/renmengye/ base62-CSHARP /

これは、 "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 文字空間範囲内エンコーダ/デコーダです。

私はちょうど

とそのメソッドを包ん

System.Text.Encoding.UTF8.GetBytes(plainText); そして System.Text.Encoding.UTF8.GetString(decoded);

これは文字列で簡単に作業できるようにするために呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top