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

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

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

Re[3]: テキストボックスの文字をアスキー変換


(過去ログ 30 を表示中)

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

■14664 / inTopicNo.1)  テキストボックスの文字をアスキー変換
  
□投稿者/ Key (1回)-(2008/02/25(Mon) 10:26:06)

分類:[C#] 

ネット上に情報があるのでしょうが見つけられず、行き詰まってしまいました。

テキストボックスに、半角アルファベット1文字が入っており、
ボタンを押したら、そのアルファベットのアスキーコードを表示させたいです。
具体的にはstring型からchar型への変換?で行き詰まっています。

  string strA1 = textBox1.Text;
  char charA1 = strA1;          //←ここでエラー
  int intA1 = (int)charA1;
  MessageBox.Show(intA1.ToString());

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

引用返信 編集キー/
■14666 / inTopicNo.2)  Re[1]: テキストボックスの文字をアスキー変換
□投稿者/ Key (2回)-(2008/02/25(Mon) 10:33:50)
補足
テキストボックスに入る英字は、半角1文字に限定しています。
引用返信 編集キー/
■14667 / inTopicNo.3)  Re[2]: テキストボックスの文字をアスキー変換
□投稿者/ PATIO (6回)-(2008/02/25(Mon) 10:42:10)
No14666 (Key さん) に返信
> 補足
> テキストボックスに入る英字は、半角1文字に限定しています。

限定していたとしてもStringクラスは文字列を扱うクラスなのですから
直接Charには変換できないと思いますよ。
文字列である以上は2文字以上設定可能なのですから
どの文字をCharにしたいのかを限定できないと変換はできないと
思います。

引用返信 編集キー/
■14668 / inTopicNo.4)  Re[3]: テキストボックスの文字をアスキー変換
□投稿者/ Key (3回)-(2008/02/25(Mon) 10:52:49)
No14667 (PATIO さん) に返信
ご返信、ありがとうございます。

自分で使うツール的ソフトなものですから「A〜Z以外は入力しない」ので…
と考えていたのですが、そう簡単な事ではないのですね…。

------------------------------------------------------------------------------------
@ITを見ていると、
  char c1 = 'a';
  int code1 = (int)c1;
  Console.WriteLine(code1); // 出力:97
  //http://www.atmarkit.co.jp/fdotnet/dotnettips/572asciicode/asciicode.html

と、簡単に得られていたので、少し手入れするだけで可能なのかと思っていました。
手の掛かる方法でも良いので、何か良い方法/参考URL等ありましたら、ご教示お願いいたします。

引用返信 編集キー/
■14669 / inTopicNo.5)  Re[4]: テキストボックスの文字をアスキー変換
□投稿者/ Blue (361回)-(2008/02/25(Mon) 10:53:47)
String s = "a";
char c = s[0];

ってこと?
引用返信 編集キー/
■14670 / inTopicNo.6)  Re[5]: テキストボックスの文字をアスキー変換
□投稿者/ Key (4回)-(2008/02/25(Mon) 10:58:14)
No14669 (Blue さん) に返信

配列型に入れて、1つめを取得すれば良かったのですね。
ありがとうございました。
解決済み
引用返信 編集キー/
■14671 / inTopicNo.7)  Re[5]: テキストボックスの文字をアスキー変換
□投稿者/ PATIO (7回)-(2008/02/25(Mon) 10:59:02)
2008/02/25(Mon) 11:02:12 編集(投稿者)
2008/02/25(Mon) 11:00:18 編集(投稿者)

No14669 (Blue さん) に返信
> String s = "a";
> char c = s[0];
>
> ってこと?

多分、そうなるだろうなぁと。
一文字しか入れないわけだから先頭の文字をcharにすれば良い訳で。
後は何処までエラーに対応するかなんでしょうけれど。
何も入力しないで提示されているコードを動かすとどうなるかとか
実験してみる事をお勧めします。
この辺はやって見て確認した方が多分わかると思うし。

あうあう。
入れ違いで書いてしまったので解決を入れておきますね。
ただ、エラーに関しても色々考えて見た方がいいですよ。

あと、配列なのではなくてStringの中に持っている文字列の
中の何番目の文字を取り出すかと言う話です。

解決済み
引用返信 編集キー/
■14673 / inTopicNo.8)  Re[6]: テキストボックスの文字をアスキー変換
□投稿者/ Blue (362回)-(2008/02/25(Mon) 11:03:37)
>配列型に入れて
配列に入れているわけではないです。

stringクラスにCharsプロパティがあるので直接それでとれるのです。
http://msdn2.microsoft.com/ja-jp/library/system.string.chars(VS.80).aspx

配列に入れるのであれば、ToCharArrayメソッドから取得することになるのかな。
http://msdn2.microsoft.com/ja-jp/library/ezftk57x(VS.80).aspx
解決済み
引用返信 編集キー/
■14675 / inTopicNo.9)  Re[7]: テキストボックスの文字をアスキー変換
□投稿者/ PATIO (8回)-(2008/02/25(Mon) 11:09:55)
2008/02/25(Mon) 11:15:19 編集(投稿者)
2008/02/25(Mon) 11:10:46 編集(投稿者)
2008/02/25(Mon) 11:10:37 編集(投稿者)

No14673 (Blue さん) に返信
> stringクラスにCharsプロパティがあるので直接それでとれるのです。
> http://msdn2.microsoft.com/ja-jp/library/system.string.chars(VS.80).aspx

これってインデクサだって考えていいんですよね、多分。


> 配列に入れるのであれば、ToCharArrayメソッドから取得することになるのかな。
> http://msdn2.microsoft.com/ja-jp/library/ezftk57x(VS.80).aspx

こっちはKeyさんが求めている物ではなさそうな感じですね。
比較対象にはなりそうですけれど。
混乱しないかなぁ。

あと、気になっているのがアスキーコードと言ってしまっている点。
確かC#って内部的にはUNICODEですよね。
確かにASCII文字の部分はASCIIコードが2バイト化したコードが使われているから
結果的には同じになってますけれど、その部分を認識しないで偶々うまく言っているのであれば、
ちゃんと認識した方が良いような気がします。

解決済み
引用返信 編集キー/
■14677 / inTopicNo.10)  Re[1]: テキストボックスの文字をアスキー変換
□投稿者/ 七曜 (83回)-(2008/02/25(Mon) 11:23:11)
No14664 (Key さん) に返信
まぁ、文字列の扱いがどうのとかは他の方に譲りますが、考え方としては入力された1バイトのASCIIコードが取れれば良いのであれば
            Char[] values = textBox1.Text.ToCharArray();
            Encoding ascii = Encoding.ASCII;
            Byte[] encodingValue = ascii.GetBytes(values);
            MessageBox.Show(encodingValue[0].ToString());

こんな感じなのかなぁ。

引用返信 編集キー/
■14678 / inTopicNo.11)  Re[2]: テキストボックスの文字をアスキー変換
□投稿者/ PATIO (9回)-(2008/02/25(Mon) 11:30:46)
2008/02/25(Mon) 11:31:32 編集(投稿者)

No14677 (七曜 さん) に返信
> ■No14664 (Key さん) に返信
> まぁ、文字列の扱いがどうのとかは他の方に譲りますが、考え方としては入力された1バイトのASCIIコードが取れれば良いのであれば
> Char[] values = textBox1.Text.ToCharArray();
> Encoding ascii = Encoding.ASCII;
> Byte[] encodingValue = ascii.GetBytes(values);
> MessageBox.Show(encodingValue[0].ToString());
>
> こんな感じなのかなぁ。

なるほど。
UNICODEで取れるからASCIIにエンコードして処理しましょうって話ですね。
Stringで取らなくてもChar[]ではじめから取得すれば良いと。

解決済みが外れちゃっているので付けときますね。

解決済み
引用返信 編集キー/
■14682 / inTopicNo.12)  Re[3]: テキストボックスの文字をアスキー変換
□投稿者/ Key (5回)-(2008/02/25(Mon) 11:49:49)
>PATIOさん
>配列なのではなくてStringの中に持っている文字列の
>中の何番目の文字を取り出すかと言う話です。
な、な、なるほど....

string strA1 = textBox1.Text;
char charA1 = strA1
これは型のエラーになって
string strA1 = textBox1.Text;
char charA1 = strA1[0]
これだとchar型に入ってしまう仕組みがまだ理解出来ていませんが、
「文字列から取り出したものならcharに入る」ということが大変勉強になりました。

それから、「内部的にはUNICODEな事を気をつける必要がある」件もありがとうございました。

>七曜さん
UNICODEを意識して作り直した解まで下さって、ありがとうございます。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -