はじめて質問させていただきます。
int型のdata1にバイナリのAB、
int型のdata2にバイナリのCD、が
入っているものとして、それを
int型のdata3にAB CD、とするには
どのようにしたらいいのでしょうか?
VBですと、data3 = data1 & data2とすれば
いいのですが、C言語の場合はどうすればいいのか
わかりません。
よろしくお願いいたします。
開発環境はVB6.0をwin2000で使用しております。
意味がよく解らないのですが・・・
多分、0xAB と、0xCD の各値を、最終的に、0xABCD と言う数値表現
にしたいのでしょうか・・・int型とありますので・・・
であれば、 data3 = data1 * 256 + data2
ですが・・・
文字としてなのかよく解らないので・・・
以上。
岡田 之仁様、
早速の返信ありがとうございます。
「Visual Basic Q & A 掲示板」の方では
よくそのお名前を拝見しておりました。
まず訂正ですが、当方の開発環境は
VC6.0をwin2000で使用しております。
失礼しました。
質問についてですが、
岡田様がおっしゃる通り、0xAB と 0xCD を
0xABCDとしたかったものです。
data3 = data1 * 256 + data2 とすることで、
期待する結果が得られました。
ありがとうございました。
ただ、一つわからないのが、
「*256」というのは何を意味しているのでしょうか?
何故、data1に対してのみ「*256」としているのかがわかりません。
data3 = data1 + data2 * 256 とすると 0xCDBA となるのもわかりません。
よろしくお願いいたします。
0xABCD = 0xAB00 + 0xCD です。
ところで、32 * 100 = 3200 ですね(別に 32 に意味はないです)。
100 をかけると2桁ズレました。
これは 16 進数でも同じです。
で、10進数での 256 は 16進数では 0x100 なのです。
つまり、0xAB * 0x100 = 0xAB00
最初の式は 0xABCD = 0xAB * 0x100 + 0xCD になります。
0x100 を 256 に戻してやって、それぞれの値を変数名を使って表せば
data3 = data1 * 256 + data2
になるわけです。よろしいでしょうか?
シャノン様、
丁寧なご返答ありがとうございます。
2桁ずらすために「*256」としていたのですね。
よくわかりました。
プログラミングをするようになって、
「255」=「0xFF」という関連は頭の中ですぐに
できるようになっていたのですが、
「256」=「0x100」というのは、思いつきませんでした。
まだまだ訓練が足りないみたいです。
どうもありがとうございました。
Cの場合こっちの方が一般的かも
data3 = (data1 << 8) | data2;
ツイート | ![]() |