16進数を変数に入れる

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
net921
記事: 70
登録日時: 13年前

16進数を変数に入れる

#1

投稿記事 by net921 » 13年前

下記のようなプログラムを実行すると5cと表示されます。
これを変数に入れてから表示したいのですがどのようにすればよいでしょうか??

利用目的としてはchar s[]=5c;と一致したら何かを実行する処理をするためです。
うまく動いたプログラムは下に書いてあります。
最後に編集したユーザー net921 on 2012年4月01日(日) 09:05 [ 編集 1 回目 ]

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 16進数を変数に入れる

#2

投稿記事 by beatle » 13年前

net921 さんが書きました: これを変数に入れてから表示したい
僕には、checksumという変数に入っているように見えるのですが。そういうことではなくて?

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#3

投稿記事 by net921 » 13年前

vc++2010
でステップ実行して変数の中身を見てみると92'\'と書いてありました。

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#4

投稿記事 by net921 » 13年前

こうするとifのところでエラーになります。
うまく動いたプログラムは下に書いてあります。
最後に編集したユーザー net921 on 2012年4月01日(日) 09:05 [ 編集 1 回目 ]

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 16進数を変数に入れる

#5

投稿記事 by beatle » 13年前

文字と文字列を==で比較しようとしてますからねぇ。
つまりnet921さんがやりたいのは、整数としての0x5cという値を、文字列に変換してchar型配列に格納する、ということでしょうか。
それならsprintfが使いやすいと思います。

コード:

char buf[4];
sprintf(buf, "%02x", checksum);

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#6

投稿記事 by net921 » 13年前

できました。
ありがとうございます。

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#7

投稿記事 by net921 » 13年前

このようにしましたがifの中が実行されません。

うまく動いたプログラムは下に書いてあります。
最後に編集したユーザー net921 on 2012年4月01日(日) 09:04 [ 編集 3 回目 ]

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#8

投稿記事 by net921 » 13年前

何かおかしなところがあるのでしょうか??

beatle
記事: 1281
登録日時: 13年前
住所: 埼玉
連絡を取る:

Re: 16進数を変数に入れる

#9

投稿記事 by beatle » 13年前

C言語の文字列を復習なされたほうがよろしいかと思います。
検索したところ、「C言語で文字列を扱う」のようなページが有りました。
他のサイトでも書籍でもいいと思いますが、文字列を勉強して下さい。

box
記事: 2002
登録日時: 14年前

Re: 16進数を変数に入れる

#10

投稿記事 by box » 13年前

net921 さんが書きました:

コード:

  if(buf == "5c"){
このif文は、buf[0]のアドレスと文字列リテラル"5c"の先頭のアドレスとを比較しています。
通常、両者は相異なります。よって、このif文は偽となります。
buf[]の中身が"5c"であるかどうかを調べるには、
strcmp()あたりを使うのがいいと思います。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

fulls
記事: 72
登録日時: 14年前
住所: 埼玉

Re: 16進数を変数に入れる

#11

投稿記事 by fulls » 13年前

コード:

  char buf[4]=””;
全角半角が混ざってるように見えるのですが。

コード:

  if(buf == "5c"){
charの文字列の比較はNo:5でbeatleさんに言われていたと思いますが、"=="ではできません。

YuO
記事: 947
登録日時: 14年前
住所: 東京都世田谷区

Re: 16進数を変数に入れる

#12

投稿記事 by YuO » 13年前

真にやりたいことが

コード:

  if(checksum == 0x5c){
であるようにしか思えないのは私だけでしょうか……。

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#13

投稿記事 by net921 » 13年前

ありがとうございます。
ちょっとやってみます。

net921
記事: 70
登録日時: 13年前

Re: 16進数を変数に入れる

#14

投稿記事 by net921 » 13年前

うまくいきました。
僕は馬鹿でした!!」

閉鎖

“C言語何でも質問掲示板” へ戻る