• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#に取り組んでいる初心者です.)

C#初心者のためのアスキーコードの使用方法

このQ&Aのポイント
  • C#初心者がプログラム中でアスキーコードを使用する方法を知りたいです。
  • 0x**やCHRを使ってもうまくいかないので、他の方法はないか教えてください。
  • 自分の環境はNEC ValueOneで、CPUはAthlon 64x2 4200+、XP SP3、RAMは2GB、HDは1st 250GBと2nd 150GBです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

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を終端とか判断してしまうと誤動作の原因になります。

red_neck
質問者

お礼

早速のご教示、有難うございました. お蔭様で、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」となることがわかりました. 再度、お手数をかけて恐縮ですが、このあたりをご説明いただけないでしょうか. お願いいたします.

その他の回答 (2)

回答No.3

> Console.Writeline(aa + bb);  これは計算式が入ってるので、暗黙の型変換で整数型とみなされ、数値計算の結果が10進数で表示されます。 > Console.WriteLine(aa + "" + bb);  これは「""」があることで、()内が文字型変数を文字列に結合しているのだと解釈されているので、()内全体で"AB"という文字列とし、「AB」と表示されます。  もっとも、「AB」と表示したいと明確にするなら、  Console.WriteLine(aa.ToString() + bb.ToString()); という書き方もありますが。

red_neck
質問者

お礼

magicalpass 様 再度、詳細にご教示いただいて、本当に有難うございました. お礼を申し上げます. 実は画面の最下段に、私の癖で、"Press Sapce Bar for Next Step "と 表示して、Space Bar を押したら、次ページへ移ると言うようにしていまし た. そんなわけで0x20を、charか、string で表現したかったわけです. とにかく、お蔭様で目鼻がつきました. 有難うございました.                                    

  • hoge_piyo
  • ベストアンサー率57% (15/26)
回答No.1

やりたい事がいまいちわからないのですが・・・ 昔と同じように、0x** というのはC言語のように char hoge = 0x41; というようにしたいと言うことでしょうか?

red_neck
質問者

お礼

有難うございました. おっしゃるとおりです. お蔭様で、ASCII code がまた使えるようになりました. お礼を申し上げます.

関連するQ&A