ヘキサコードとは?
c言語でのヘキサコードの標準入出力とファイルへの入出力
を人に聞かれましたが、ヘキサコード自体がなんだかわからなくて。
16進数?迄はネットで調べたんですが、
文字や数字の16進数表記ということでしょうか?
実際、標準入出力とファイルへの入出力の方法、そして、
ヘキサコードのヘキサの部分の英語のつづりを教えてください。
どう便利なんでしょうか?どういった場合に使うんでしょうか?
少しでもわかることがあれば助けてください
ヘキサコード自体がよくわからず質問をしているので
トンチンカンな事を言っていたらごめんなさい。
回答(3件)
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示
No.3ベストアンサー20pt
なかなかねばりますね。
わたしも、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
初めまして。
#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」がかすかに残っている程度ですね。
この回答へのお礼
ご回答いただきましてありがとうございした。
すみませんバイナリーモードのオープンってどうやるんでしょうか?
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);
}
もしもご回答いただけるのであればお願いいたします
No.1ベストアンサー10pt
おそらく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);
}
もしもご回答いただけるのであればお願いいたします。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示












