- ベストアンサー
ヘキサコードとは?
c言語でのヘキサコードの標準入出力とファイルへの入出力 を人に聞かれましたが、ヘキサコード自体がなんだかわからなくて。 16進数?迄はネットで調べたんですが、 文字や数字の16進数表記ということでしょうか? 実際、標準入出力とファイルへの入出力の方法、そして、 ヘキサコードのヘキサの部分の英語のつづりを教えてください。 どう便利なんでしょうか?どういった場合に使うんでしょうか? 少しでもわかることがあれば助けてください ヘキサコード自体がよくわからず質問をしているので トンチンカンな事を言っていたらごめんなさい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なかなかねばりますね。 わたしも、Cの参考書広げなくちゃならなくなりそうです。(汗) >すみませんバイナリーモードのオープンってどうやるんでしょうか? fii=fopen("hexa.dat","w"); ↓ fii=fopen("hexa.dat","wb"); ですね。 >10進数の123は16進数に変換されましたが、 >他はされたんでしょうか? >文字の場合は、文字コードが16進数になったとかですかね。 そうですね。scanf("%x",&a); だと16進になっていますね。 10進入力から16進変換したい場合は、このコーディングだと scanf("%d",&a);とやるか、書式付でscanf("%3d",ch);とかでしょう。 >2進数や8進数は何コードで%何でしょうか? 8進数は’%o’→OCTのOですね。2進数は…、忘れちゃいました。めったにというか使ったこと無いんで(^^);たしか、%bでよかったのかなあ?m(__)m
その他の回答 (2)
- PAPA0427
- ベストアンサー率22% (559/2488)
初めまして。 #1さんの回答とダブル部分もありますが、ご容赦ください。 >文字や数字の16進数表記ということでしょうか? その通りです。他にも2進数や8進数があります。私たちが普通の生活で使っているのが10進数ですね。 >実際、標準入出力とファイルへの入出力の方法 #1さんの方法で間違いありません。バイナリモードでファイルをオープンすれば%dでコーディングしても、ファイルの中身はHEXで書かれれています。 >ヘキサコードのヘキサの部分の英語のつづりを教えてください。 #1さんと同じです。参考URLを検索してください。 >どう便利なんでしょうか?どういった場合に使うんでしょうか? だいたい、C言語を使用するケースって、デイバスドライバとかOSのAPIを操作しますよね。そんな技術解説書や情報はすべて16進数で記述されていますので、10進数に変換してコーディングしても、バグがでたとかディバックの際に、また10進→16進変換してって無駄な手間が増えるだけですから。バグの元ってことで。 ちなみにC言語の系譜は、A言語(アッセンブラ、いわゆるマシン語です)→B言語→C言語→C++orC#といったところです。B言語は非常に短命な言語で私も知りません。UNIX系のOSで「B Shell」がかすかに残っている程度ですね。
- liar_adan
- ベストアンサー率48% (730/1515)
おそらく16進数のことでいいと思います。 正式には16進はhexadecimalといい、hexa(6) + decimal(10進法)の意味です。 hexだけだと「6」のことになって、意味的にはおかしいのですが慣用的に使われているようです。 ヘキサコードのスペルはhexacodeになるでしょう。 16進数を入出力するには、printf(), scanf()族の関数で %xか%Xを使います。 数を普通の10進で表示するとき%dを使いましたね。あれのかわりに%x,%Xを使います。 %xを使うとa~fが小文字になり、%Xを使うと大文字になります。
お礼
ありがとうございました。 ヘキサコードでネットで検索してみましたが、 いつまでたっても16進数らしい事はわかったのですが、 使い方までは見当たりませんでしたので感謝しています。 あの、もし、更に教えていただけるのであれば 見ていただけたらと思ったのですが、 実際に簡単なテストプログラムを作ってみたのですが、 使い方おかしいですかね? 以下のプログラムを実行し、 numberで15を入力し、stringでaを入力した結果 input number = 15 input string = feb abc =>ff7 123 =>7b となり、10進数の123は16進数に変換されましたが、 他はされたんでしょうか? 文字の場合は、文字コードが16進数になったとかですかね。 #include<stdio.h> main() { int atai=123,a; char ch[3]="a",b[10]; FILE *fii; fii=fopen("hexsa.dat","w"); printf("number input=>"); scanf("%x",&a); printf("string input=>"); scanf("%x",b); printf("input number = %x\n",a); fprintf(fii,"input number = %x\n",a); printf("input string = %x\n",b); fprintf(fii,"input string = %x\n",b); printf("abc =>%x\n",ch); printf("123 =>%x\n",atai); fprintf(fii,"abc =>%x\n",ch); fprintf(fii,"123 =>%x\n",atai); fclose(fii); } もしもご回答いただけるのであればお願いいたします。
お礼
ご回答いただきましてありがとうございした。 すみませんバイナリーモードのオープンってどうやるんでしょうか? 2進数や8進数は何コードで%何でしょうか? あの、もし、更に教えていただけるのであれば 見ていただけたらと思ったのですが、 実際に簡単なテストプログラムを作ってみたのですが、 使い方おかしいですかね? 以下のプログラムを実行し、 numberで15を入力し、stringでaを入力した結果 input number = 15 input string = feb abc =>ff7 123 =>7b となり、10進数の123は16進数に変換されましたが、 他はされたんでしょうか? 文字の場合は、文字コードが16進数になったとかですかね。 #include<stdio.h> main() { int atai=123,a; char ch[3]="a",b[10]; FILE *fii; fii=fopen("hexa.dat","w"); printf("number input=>"); scanf("%x",&a); printf("string input=>"); scanf("%x",b); printf("input number = %x\n",a); fprintf(fii,"input number = %x\n",a); printf("input string = %x\n",b); fprintf(fii,"input string = %x\n",b); printf("abc =>%x\n",ch); printf("123 =>%x\n",atai); fprintf(fii,"abc =>%x\n",ch); fprintf(fii,"123 =>%x\n",atai); fclose(fii); } もしもご回答いただけるのであればお願いいたします