• ベストアンサー
  • 困ってます

ASCIIコードへの変換方法

ポインタに文字列を格納し char *a="a"; char *b="ace"; このポインタの中身をASCIIコードで表示させるプログラム ポインタaの中身aはASCIIコード8進数で001です。 ポインタbの中身aceはASCIIコード8進数で001003005です。 という感じのプログラムを作りたいのですが ASCIIへの変換方法がわからなく困っています。 もしよろしかったら具体例等のプログラムのご教授願います。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数2628
  • ありがとう数2

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

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

#1です。 char *b="ace"; char *c; printf("%s=", b); for( c=b; *c!='\0'; c++ ) printf("%o", *c); printf("\n"); 以上で「ace=141143145」と表示されると思います。 これを関数にまとめておけば、使い回しが出来ます。 たとえば... void octdisp(const char *a) { char *b; printf("%s=", a); for( b=a; *b!='\0'; b++ ) printf("%o", *b); printf("\n"); } int main(void) { char *a="a"; char *b="ace"; octdisp(a); octdisp(b); return 0; }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 大変参考になりました。

関連するQ&A

  • ASCIIコードへの変換方法

    前の質問と似たような質問ですが困っております。 ポインタに文字列を格納し char *a="a"; char *b="ace"; このポインタの中身をASCIIコードで表示させるプログラム ポインタaの中身aはASCIIコード2進数で********です。 ポインタbの中身aceはASCIIコード2進数で************************です。 という感じのプログラムを作りたいのですが、8進数表示はここで教えてもらい理解できましたが2進数への変換方法がわからりません。 もしよろしかったら具体例等のプログラムのご教授願います。

  • 16進をASCIIコードに変換する手法

    16進をASCIIコードに変換する手法を教えて下さい。 *例 もしchar型変数aに0x0aが入っていたら0x41(大文字にしたい) aの値が1~fどれがきても対応できるようにしたいのですが・・・ if文とかswitchを多用しなくても簡潔に記述できますか?

  • ASCII文字列をEUCなどに変換したいができない

    いつもお世話になっております。 ファイルの文字コードがEUCのファイルの中に、 なぜか、文字コードがASCIIである文字列があります。 この文字列は、外部から受け取るカタチなので、 これはこれで、ASCIIでも、しかたないのかなという風に思い、 それならば、受け取った後、EUCに変換すればいいやと考え、 mb_convert_encoding($var,"EUC-JP","ASCII")を使って、変換を試みるも、 ASCIIのままなのです。 ASCIIである文字列には、変換されない鉄壁さというものがあるのでしょうか? 変換処理後に、mb_detect_encoding()で検査しますが、やはりASCIIのままです。 それならば!、ということで、 受け取る値(ここでは例として、"This_Value_is_ASCII_Encoding_hogehoge9999")を いったん手動のコピペ操作をして、 $UketoruAtai = "This_Value_is_ASCII_Encoding"; とし、 その値もやはり、ASCII文字列になっているので、 この、手動コピペ文字列ならば文字コードの変換はできるだろうと思い、 上記のmb_convert_encoding()の処理をしたわけですが、 この場合でも、やはり ASCIIは鉄壁でした。 いったい、これは、なんなんでしょうか、、、。 ちなみに、このASCII文字列は、英数字のみ(当たり前か。笑)の文字列です。 このASCII文字列を、EUC-JPにする手助けを、どなたか宜しくお願い致します。

    • ベストアンサー
    • PHP

その他の回答 (2)

  • 回答No.3

ANo.2のように1文字ずつコードを表示すればOKです。 ただし、"%o" は "%03o" にしないと数字が小さいとき3桁になりません。 参考まで。 #include <stdio.h> void octdisp(char *a, char *name) { char *p=a; printf("ポインタ%sの中身%sはASCIIコード8進数で", name,a); while(*p!='\0') printf("%03o", *p++); printf("です。\n"); } int main(void) { char *a="a"; char *b="abc"; octdisp(a, "a"); octdisp(b, "b"); return 0; }

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございました。 大変参考になりました。

  • 回答No.1

文字をどのように見るかで変わってくるだけです。(と言いますが、パソコンの奥深くでは文字だろうと何だろうと常に数字です。) ちなみに、"a"のASCIIコードは0x61ですが... printf("%c=%o", *a, *a); これだと、 a=141 と表示されるはずです。

共感・感謝の気持ちを伝えよう!

質問者からの補足

即レスありがとうございます。 %oや%dのみだとポインタの最初の文字だけ表示されて char *b="ace";の様な文字列だと"%o",*dだけでは141143145と全ての文字が表示されないのですが何か解決策は無いでしょうか? 初心者ですいません><

関連するQ&A

  • ASCIIコードに変換するには?

    ポケベルのコードをASCIIコードに変換するプログラムがどうしても書けません。。教えてください。 せめてアルゴリズムだけでもお願いします。

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

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

  • Excel でASCII文字列を16進コードへ変換

    Excel でA1セルに、 A1セル:”1234” という半角英字の文字列が入力されています。 これをすべてASCIIコードへ変換したいのですが、 何か方法はありますでしょうか? 結果は、 A2セル:”49505152” となることを想定しています。 私なりに調べたのですが、 =CODE(MID(A1,1,1)) & CODE(MID(A1,2,1)) & CODE(MID(A1,3,1)) & CODE(MID(A1,4,1)) なら、期待した結果になっておりましたが、 文字数が多い場合にかなり不効率でした。 他の方法をご教授ください。

  • 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++にはないのでしょうか?

  • X86アセンブラで 16進数を10進数のASCIIコードに変換する方法

    X86アセンブラで16進数から10進数のASCIIコードに変換する方法を模索しております。 例:  0x64(100d) 期待値:0x31 0x30 0x30 ("1","0","0"の3ByteのASCIIデータ) といった内容になります。 論理演算等で求める手法がございましたら、ご教授頂ければ幸いです。

  • N88BASICのASCII変換について

    こんにちは。palbanです。 現在N88BasicでFDにバイナリ保存されたプログラムコード をFileconvを使ってDOSフォーマットでHDに保存し N88BasicでASCII変換しプログラムコードを確認する 作業をしています。 そこでN88BasicでASCII変換するときに半角文字は変換 されるのですが全角文字が変換されず化けて表示されて しまいます。 全角文字を化けないようにする変換方法はないでしょうか? また、BasicプログラムのCVSやCMD等のコマンドが わかりません。Basic言語のリファレンスガイドを 置いているHPをお教え頂きたいです。 長文になってしまいましたが宜しくお願いします。

  • 2バイト文字をASCIIコードに変換

    SQL Server初心者です。 SQL Serverで2バイト文字をASCIIコードの値で返したいのですが、関数ASCII()を使用すると、1バイト目のASCIIコードの値しか返してくれません。 2バイト目の文字も返す方法をご教授ください。 言葉足らずでわかりにくいかと思いますが、よろしくお願い致します。

  • ASCIIコード8bitについて

    ASCIIコード8bitについて教えてください。 『F7300.』この文字データをASCII文字コードの8bitで表現するとどのようになりますか? 変換の仕方も教えていただけたら幸いです。

  • アスキーコードへの変換について VB6(初心者)

    変数文字列をアスキーコードの10進数であらわしたいのですが、どのようなプログラムをかけばいいのでしょうか? ネットで調べたのですが、よくわかりません。 たとえば hensuumojiretuという名前の変数文字列を作り、それをアスキーコードに変換するとしたらどのようなプログラムをかいたらよいのでしょうか。 hensuumojiretuは自分で入力する形にしたいです。 それがわかったら変換後のアスキーコードを変数文字列(数字?)として定義したいと思っています。 この本に載ってるとか、このサイトにあるよという情報でもよいのでどうかおしえてくださいおねがいします。

  • Visual Basic でのコードをASCII変換、16進変換したものを元に戻す方法を教えてください

    string(9)のエリア"Aa1アあa "の文字を1文字ずつASCII変換して、16進変換し、string(18)のエリアに格納します すると"416131B182A08281202020"と変換されます (一文字ずつ Hex(Asc(Buf))を使用しました) 逆に、"416131B182A08281202020"を"Aa1アあa "に戻したいのですが、 どのような関数を使えばよいのかわかりません。 困っています。教えてください。よろしくお願いいたします。