dポイントプレゼントキャンペーン実施中!

C#に取り組んでいる初心者です.
プログラム中に、アスキー・コードを使用したいのですが、どのような命
令を使ったらよいのかわからずに困っています.

最初は、昔と同じように、0x** としましたが駄目でした. CHR も受け
付けてくれません. MSDNライブラリの中のどこかにあると考えて、いろ
んな名前空間の中のメンバーを探してみましたが見つかりません.
          
探し方がまだ不十分だとお叱りを受けるかもしれませんが、どうも見つか
りません.お手数かけて恐縮ですが、どなたかご教示をいただけないでし
ょうか. お願いいたします.

当方の環境は、次のとおりです.

NEC ValueOne
CPU Athlon 64x2 4200+
XP SP3
RAM 2GB
HD 1st 250 GB, 2nd 150 GB

A 回答 (3件)

C#では文字型は整数とは区別されていますので、文字コードをダイレクトで用いる場合は注意する必要があります。

(実際には整数値が入ってるけど)

○  char a = 'A';
×  char b = 0x41;
○  char c = (char)0x41;

ちなみに、C#(といううか.NET)の内部コードはUNICODEなので昔のANCI文字(英数字は1バイト、漢字は2バイト)とかいう感覚で文字を使うのは危険です。charはC言語では8bitの整数型ですが、C#では16bitで定義され、英数字も漢字も基本的にはchar型1個で表されます。

上記、a,cには共に'A'が入っていますが、16bitコードなので正しくは0x0041が入ります。char型として使ってる限りは従来のC言語のcharと同じ感覚でも良いのですが、文字列をメモリに展開して1byte単位でアクセスして0x00を終端とか判断してしまうと誤動作の原因になります。
    • good
    • 0
この回答へのお礼

早速のご教示、有難うございました.
お蔭様で、ascii code が使えるようになりました.
                                  
ご教示のとおり、char は1Byte と勝手に思い込んでいました.C#では、
unicode、16bit を使用していると聞いてはいましたが、ピンと来ていま
せんでした.

ところで余計なことで恐縮ですが、「AB}と書かせるつもりで
char aa = (char)0x0041, bb = (char)0x0042;
Console.Writeline(aa + bb);
とすると、表示は「131」と10進の合計となってしまいます.

いろいろやっているうちに、
 Console.WriteLine(aa + "" + bb); と、途中に "" をいれて
二つを分離すると、希望通りに「AB」となることがわかりました.

再度、お手数をかけて恐縮ですが、このあたりをご説明いただけないでしょうか.
お願いいたします.

お礼日時:2010/05/15 17:33

> Console.Writeline(aa + bb);


 これは計算式が入ってるので、暗黙の型変換で整数型とみなされ、数値計算の結果が10進数で表示されます。

> Console.WriteLine(aa + "" + bb);
 これは「""」があることで、()内が文字型変数を文字列に結合しているのだと解釈されているので、()内全体で"AB"という文字列とし、「AB」と表示されます。

 もっとも、「AB」と表示したいと明確にするなら、
 Console.WriteLine(aa.ToString() + bb.ToString());
という書き方もありますが。
    • good
    • 0
この回答へのお礼

magicalpass 様

再度、詳細にご教示いただいて、本当に有難うございました.
お礼を申し上げます.

実は画面の最下段に、私の癖で、"Press Sapce Bar for Next Step "と
表示して、Space Bar を押したら、次ページへ移ると言うようにしていまし
た.

そんなわけで0x20を、charか、string で表現したかったわけです.
とにかく、お蔭様で目鼻がつきました. 有難うございました.

                                   

お礼日時:2010/05/16 15:33

やりたい事がいまいちわからないのですが・・・



昔と同じように、0x**

というのはC言語のように

char hoge = 0x41;

というようにしたいと言うことでしょうか?
    • good
    • 0
この回答へのお礼

有難うございました.
おっしゃるとおりです.

お蔭様で、ASCII code がまた使えるようになりました.
お礼を申し上げます.

お礼日時:2010/05/15 17:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!