C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: C#でのテーブル参照方法


(過去ログ 19 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■7473 / inTopicNo.1)  C#でのテーブル参照方法
  
□投稿者/ tobi (1回)-(2007/09/06(Thu) 13:51:03)

分類:[C#] 

ランダムなパスワード文字列を作成するために、
C#で、以下のCのような記述をしたいと思っているのですが
参考になるサイト等がありましたら教えていただけないでしょうか?

----
Cの場合
char cData[] = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
char szPassword[9];
for(int i = 0;i < 8;i++)
{
   szPassword[i] = cData[random() % 62]; 
}
szPassword[i] = '\0';
----

まず、C#ではユニコードになるので、byte配列で'0123456789abcdefg...を記述する方法が分かりません。
そして、1文字ずつユニコードに変換させてstringに変えたいのですが、
いったん別のbyte配列に生成したものを入れてから、Encoding.ASCII.GetString()を呼び出すことに
なるのでしょうか?

よろしくお願いいたします。

引用返信 編集キー/
■7474 / inTopicNo.2)  Re[1]: C#でのテーブル参照方法
□投稿者/ 魔界の仮面弁士 (411回)-(2007/09/06(Thu) 14:10:39)
2007/09/06(Thu) 14:18:51 編集(投稿者)
No7473 (tobi さん) に返信
> まず、C#ではユニコードになるので、byte配列で'0123456789abcdefg...を記述する方法が分かりません。
> そして、1文字ずつユニコードに変換させてstringに変えたいのですが、

byte で処理するのでは無く、char で処理することを検討してみてください。


とりあえず、20人分のパスワード生成(8文字)を。

static void Main()
{
    // StringBuilder szPassword = new StringBuilder(new String(' ', 8));
    char[] szPassword = new char[8];

    string cData = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int limit = cData.Length;
    Random random = new Random();

    for (int test = 0; test < 20; test++)
    {
        for (int i = 0; i < 8; i++)
        {
            int c = random.Next(limit);
            szPassword[i] = cData[c];
        }
        //Console.WriteLine(szPassword.ToString());
        Console.WriteLine(new String(szPassword));
    }
    Console.ReadLine();
}

引用返信 編集キー/
■7476 / inTopicNo.3)  Re[2]: C#でのテーブル参照方法
□投稿者/ tobi (2回)-(2007/09/06(Thu) 14:28:30)
魔界の仮面弁士 さん さっそくのお返事ありがとうございます。
そして、コードまでご丁寧に助かります。

なるほど・・・今までCでのコーディングしかしておりませんでしたので、
頭の中がbyteを使ってという部分にしか考えがいっておりませんでした。

最終的にstring型にしますので、charでも良かったわけですね。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -