![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C#に取り組んでいる初心者です.
プログラム中に、アスキー・コードを使用したいのですが、どのような命
令を使ったらよいのかわからずに困っています.
最初は、昔と同じように、0x** としましたが駄目でした. CHR も受け
付けてくれません. MSDNライブラリの中のどこかにあると考えて、いろ
んな名前空間の中のメンバーを探してみましたが見つかりません.
探し方がまだ不十分だとお叱りを受けるかもしれませんが、どうも見つか
りません.お手数かけて恐縮ですが、どなたかご教示をいただけないでし
ょうか. お願いいたします.
当方の環境は、次のとおりです.
NEC ValueOne
CPU Athlon 64x2 4200+
XP SP3
RAM 2GB
HD 1st 250 GB, 2nd 150 GB
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を終端とか判断してしまうと誤動作の原因になります。
早速のご教示、有難うございました.
お蔭様で、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」となることがわかりました.
再度、お手数をかけて恐縮ですが、このあたりをご説明いただけないでしょうか.
お願いいたします.
No.3
- 回答日時:
> Console.Writeline(aa + bb);
これは計算式が入ってるので、暗黙の型変換で整数型とみなされ、数値計算の結果が10進数で表示されます。
> Console.WriteLine(aa + "" + bb);
これは「""」があることで、()内が文字型変数を文字列に結合しているのだと解釈されているので、()内全体で"AB"という文字列とし、「AB」と表示されます。
もっとも、「AB」と表示したいと明確にするなら、
Console.WriteLine(aa.ToString() + bb.ToString());
という書き方もありますが。
magicalpass 様
再度、詳細にご教示いただいて、本当に有難うございました.
お礼を申し上げます.
実は画面の最下段に、私の癖で、"Press Sapce Bar for Next Step "と
表示して、Space Bar を押したら、次ページへ移ると言うようにしていまし
た.
そんなわけで0x20を、charか、string で表現したかったわけです.
とにかく、お蔭様で目鼻がつきました. 有難うございました.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 画像編集・動画編集・音楽編集 【急】【Zbrush】3DCG初心者です。ノートPCでのZbrush動作環境につきまして 1 2023/08/19 17:38
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- ビデオカード・サウンドカード PC版:スーパーロボット大戦30 推奨環境を満たしておりますが、動作(処理)が遅いかもしれません。 1 2023/01/26 13:45
- Visual Basic(VBA) VBAについて教えてください 4 2022/11/10 12:44
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- CPU・メモリ・マザーボード ノートパソコンでゲームを快適にプレイするにはどれくらいのスペックが必要かの? 7 2023/01/27 18:39
- CPU・メモリ・マザーボード BIOS画面で固まる(メーカーロゴの画面) 4 2022/08/03 17:41
- 不動産投資・投資信託 ETFと日経225,56歳からのささやかな投資信託 3 2023/05/18 05:08
- Gmail 過去のGoogleアカウントのログイン 1 2022/08/09 20:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
char*を初期化したいのですが
-
CStringからchar*への型変換に...
-
strcat関数を自作したいです
-
C言語にて構造体のメンバがNULL...
-
2次元配列をポインタで参照した...
-
csvファイルをfscanfで読み込む...
-
char 文字列型 の表現範囲が-12...
-
strcpy関数で文字型変数へのポ...
-
char型にint型の数値を代入する。
-
new charとnew char[N]の違いは?
-
char AA[]{"全角文字"};から"全...
-
fstream型オブジェクトを関数の...
-
SubStringの使い方について
-
C言語を用いた環境変数の作成/...
-
C言語(C89)での文字列代入
-
文字列strの中から文字cを探す...
-
fgetc( )の戻り値はなぜ整数??
-
小数点入りの文字列をfloat型に...
-
C言語のmemcpy関数について質問...
-
C言語のプログラムについてです
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語のintとcharの違いってな...
-
char*を初期化したいのですが
-
C言語にて構造体のメンバがNULL...
-
CStringからchar*への型変換に...
-
strcat関数を自作したいです
-
new charとnew char[N]の違いは?
-
csvファイルをfscanfで読み込む...
-
char型にint型の数値を代入する。
-
動的メモリの初期化方法について。
-
C言語で文字列をかえす正しい書...
-
文字列str内の全ての数字を...
-
char 文字列型 の表現範囲が-12...
-
DWORDとcharの変換
-
fstream型オブジェクトを関数の...
-
小数点入りの文字列をfloat型に...
-
C言語のプログラムについてです
-
const char* s1とただのchar s1...
-
文字列内の数字削除
-
c言語でポインタ変数を用いた配...
-
szとlpszの違い
おすすめ情報