15

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

ありがとう!

4

6 に答える 6

23

答えは少し古くなっています。将来の検索者のために: C# でこれを処理する最善の方法は次のとおりです。

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

これは、URLセーフなBase64でエンコードされた文字列を返します(これは、質問へのコメントで本当に求めていたものです)。

その後、次を使用して再度デコードできます。

byte[] b = System.Web.HttpServerUtility.UrlTokenDecode(s);
于 2013-03-01T23:20:29.423 に答える
14

おそらく、Base32エンコーディングのようなものを使用することを検討しているでしょう。Michael GiagnocavoによるC#用のBase32エンコーダー/デコーダーがあります。大文字と数字の組み合わせを使用します。

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

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

于 2009-06-01T04:12:07.280 に答える
3

base-64の一般的な変形(クエリ文字列で使用)は、「+」と「/」の代わりに「-」と「_」を使用することです。おそらく、Replace(...)両端で少しずつ仕事をするでしょうか?

于 2009-06-01T04:22:09.683 に答える
2

可能であれば、+ またはスラッシュを定義済みの文字列に置き換えることができます。

于 2009-06-01T04:00:32.477 に答える
0

BitConverter.ToString() を使用すると、16 進文字列が得られます。ただし、結果の文字列は Base64 エンコーディングよりも長くなります。

于 2009-06-01T04:35:58.430 に答える