• ベストアンサー

10進201、16進C9 のASCIIコードにつきまして。

10進201、16進C9 のASCIIコードにつきまして。 vs2005 c#.net で int i = 201; (char)i; とキャストすると「Ё」 vbにて hoge = 201 chr(hoge) と変換すると「ノ」 となります。 この違いはなんなのでしょうか? また、C#でも「ノ」を出すにはどのようにすればいいのでしょうか?

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

  • ベストアンサー
  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.2

C#のchar型は16ビット幅のUnicode文字。 Unicodeで16進数のc9はアクセント記号付きのE。 いわゆる半角カナのノはUnicodeでは16進数でff89。 http://www.unicode.org/charts/PDF/U0080.pdf http://www.unicode.org/charts/PDF/UFF00.pdf

cinquecent
質問者

お礼

アドバイスありがとうございました。 シフトJISとUNIコードの違いという訳ですね。 勉強になりました。 ありがとうございました。

その他の回答 (1)

回答No.1

http://ideone.com/deFOk 問:VB6のChr関数とChrW関数の違いを述べよ。 #採点に戻ってきたりはしないけどね

cinquecent
質問者

お礼

アドバイスありがとうございました。 シフトJISとUNIコードの違いという訳ですね。 勉強になりました。 ありがとうございました。

関連するQ&A

  • ASCIIコードを文字に変換したい

    環境はVisualStdio.Net 2008のC++ Windowsフォームアプリケーションです。 C++の経験はまったくありません。 unsigned char型の配列 box[12]の中に既にアスキーコードでデータが格納されています。(例:box[0] = 48'0') これをtextbox->textにアスキーコードではなく文字で格納し、実行時に画面で確認できるようにしたいのですが、 (char)でキャストしてもfomat()で%xや%cにしても「0」でなく「48」で出力されてしまいます。 調べたらVBにはchrという関数があるみたいなんですが、これと同じ機能を持つ関数はVC++にはないのでしょうか?

  • ASCII文字変換

    VB6で、80h~9Fh 及び E0h~FFhはASCII文字変換が出来ません。(ANK文字コード表に無い) RS-232C通信機器等では、これらのASCII文字で通信しているものがありますが、対応方法をご教授頂けませんか?

  • C#のキャスト?

    C#でのキャスト(?)で困ってます。 うまく説明できないので、下にCっぽい処理を書きます。 struct _hoge{   int i;   char c[4];   double d; }; void f(){   BYTE data[16];   stream.read(data);  // 何かから16Byte読み込み   _hoge *st = (_hoge*)data; // ←ここ   TRACE("%d,%c,%f",data->i,data->c[0],data->d); } //(結構いいかげんです) 上記処理のように、BYTEの配列で取得したデータを「struct _hoge」の型にキャストしてそれぞれの要素を取り出す、ということをC#で実現したいのですがMSDNやWebを結構探したのですがわかりませんでした。(何で検索していいのかがわかりませんでした・・・) 実現方法(もしくは検索キーワード)がわかる方、教えてください。

  • 文字列からASCIIコードの取得方法

    お世話になっております。 やりたいのは、MSCommを使用しデータを送った時、 データのチェックをしたいのですが、Chr関数(値を151を入れる)で作った文字をAsc関数で戻すと値が0になってしまってチェックできません。 文字列で受け取ったデータをどのようにコード変換したらよいでしょうか? VBのバグなのか知りませんけど、 例えば、Asc(Chr$(151))、AscB(Chr$(151))は0を返し、AscB(ChrB$(151))だけが151を返します。 使用しているのは、 VB6SP4 Win2000です。 宜しくお願い致します。

  • 文字列strの中から文字cを探すプログラム(C言語)がわからない

    文字列strの中から文字cを探すプログラム(C言語)がわからない 柴田望洋さんの「[新版]明解C言語」という本の演習11-2なんですがどうしてもわかりません。間違いは無いと思うのにコンパイルすると警告を吐かれます。 僕が書いたプログラムを載せます。 /* 文字列strの中に、文字cが含まれていれば(複数ある場合は、最も先頭側とする)、 その文字へのポインタを返し、含まれていなければNULLを返す関数 char *str_chr(const char *str, int c) {} を作成せよ。 */ #include<stdio.h> char *str_chr(const char *str, int c){ while(*str){ if(*str==c) return str; str++; }     return NULL; } int main(){ char *str; char c; scanf("%s",str); scanf(" %c",c);     printf("%d",str_chr(str,c)); return 0; } コンパイラは「関数str_chrのif分の中のreturn strの型変換に問題がある」と言っているんです。 型変換はしるつもりは無いのにコンパイラはなぜそのように認識するのでしょうか。 またネット答えを探しましたがどうやらこのreturn strの部分はreturn (char*)strが正解のようです。意味がわかりません。strはポインタなのになぜまたわざわざchar型に変換しているのですか?といか(char*)の意味が根本的にわかりません。 質問ばかりですみません。初心者でポインタがどうにも理解できないんです。 誰か詳しい人教えてください。 お願いします。

  • C言語のコードについて

    C言語の問題なのですか、作成したのですが内容がわからないです。 コードをわかりやすく解説していただけると嬉しいです。 #include <stdio.h> void printBinary(unsigned char num) { int i ; /*①上位ビットから順に表示する*/ for(i = 7 ; i >= 0; i--) { /*②シフトとマスクを使用しています。*/ printf("%d", (num>>i) &0x01 ); } printf("\n"); } int main(void) { unsigned char num1 = 0xD2;/*11010010*/ unsigned char num2 = 0x5E;/*01011110*/ printf("0xD2 : "); printBinary(num1); printf("0x5E : "); printBinary(num2); return 0; }

  • なぜかビープ音が鳴ります(C言語)

    下記のプログラムはCHAR_SETの値に応じてASCII文字セットと拡張文字セットのどちらかを表示するようにコンパイルするものです。 #include <stdio.h> /* CHAR_SETを256または128のいずれかの値に定義する */ #define CHAR_SET 256 int main(void) { int i; #if CHAR_SET == 256 printf("すべてのASCII文字セットと拡張子を表示する\n"); #else printf("ASCII文字セットのみを表示する\n"); #endif for(i=0; i<CHAR_SET; i++) printf("%c", i); return 0; } 【質問】 このプログラムを実行するとビープ音が鳴るのですが、それはなぜでしょうか? いろいろ試して分かっていることは、CHAR_SETを512にすると2回鳴ることです。 ちなみに、「VisualC++.net Standard Version 2003」でコンパイルしました。 この問題に知識のある方、回答をお願い致します。

  • C++ for文

    C++を始めたばかりの初心者です。 課題がうまくいかないのでアドバイスください。 32から126までの95個の整数を一元配列に格納する。これらの整数値を文字型にキャストして、 10列の表形式で出力するプログラムを作成せよ。 ↓自分でやってみるとこうなりました。 #include <iostream> #include <cstdlib> #include <cmath> using namespace std; int main() { int i; int code[95]; char ch; for(i=0;i<=94;++i) code[i]=i+32; for(i=0;i<=94;++i) if((i+1)%10==0) ch='\n'; else{ ch=' ';  //半角スペースです。 cout<<(char)code[i]<<ch; } return EXIT_SUCCESS; } うまくコンパイルできれば   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 ……と続いていくはずなんですが 自分の場合はコンパイルしても改行されず、10文字目が消えてしまいます。 (例えば「)」とか「3」が表示されません。) ch='\n';の行がおかしいという警告も出ています。 アドバイスお願いします。

  • visual c++の文字コード判別

    現在、visual studio2010のvisual C++でメモ帳をテキストボックスに表示するプログラムを作成しています。 しかし、文字コードがASCIIで保存してあるファイルを開こうとすると、文字化けが起こります。 shift-jisなどに変換しようとすると、ほかの文字コードで保存してあるファイルを開いたときに文字化けが起こります。 文字コードがASCIIのテキストファイルを開くときのみ、shift-jisなどに変換しようと思うのですが、文字コードがASCIIであるか、そうでないかを判別できる処理があれば教えていただけないでしょうか?

  • C++ shared_arrayについて

    C++ の boost ライブラリの shared_array の挙動についての質問です。 int main() { boost::shared_arrray<char> hoge(char[1000]); boost::shared_arrray<char> hoge(char[1000]); boost::shared_arrray<char> hoge(char[1000]); sleep(100); return 0; } というプログラムがあった場合、sleep中のメモリの確保状況はどのようになるのでしょうか? shared_ptr で上記のようなコードを書くと、コンパイラがredeclarationのエラーを吐きますがshared_arrayではコンパイルが通り、動作はします。 しかしながらメモリーリークなどのバグの温床にならないか不安です。 上記のコードは安全なコードなのでしょうか? よろしければどうして前者はコンパイルが通り、後者はエラーとなったかについても言及していただけると嬉しいです。 よろしくお願いします。

専門家に質問してみよう