数値の一部の値を取り出す・変換する

[戻る]
Est 2002/12/24(火) 13:38:41
最近、VC++を使いはじめました。
今までVBの方を使っていましたが、やはり違いが多く、毎日苦戦しております。

さて、今日思った疑問です。
こんな処理をしたいのですが、どうやればいいのでしょうか?

     ある変数aに10桁の2進数値が代入されている。

     1.この2進数値の下7桁を取り出して、その値を別の変数に
       入れておく

     2.この2進数値の上3桁を111に書き換える

これまで、VBでは「left関数」や「right関数」といった文字の置換や取得に関わる
関数が用意されていましたが、ヘルプによればVC++にはないようです。
意外と、こういった話は参考書にも載っていないので完全にお手上げ状態です。

よろしくお願いいたします。

渡り鳥 2002/12/24(火) 13:50:35
ビット演算子 & や | を使います.

1.この2進数値の下7桁を取り出して、その値を別の変数に
  入れておく

 上の方法としては,
    b = a & 0x7F;

こんな感じでやってみてください.

dairygoods 2002/12/24(火) 13:53:56
変数aは文字列で、MFCのCStringを使っているものと仮定します。

CString a = "1010101010";

>1.この2進数値の下7桁を取り出して、その値を別の変数に
> 入れておく

CString b = a.Left(7);

> 2.この2進数値の上3桁を111に書き換える

a[0] = '1';
a[1] = '1';
a[2] = '1';

または、

a = "111" + a.Mid(3);

西風 2002/12/24(火) 13:54:22
VB はよく知りませんが、
数値というより 0 と 1 の並んだ文字列ですかね?

MFC を使っていれば CString クラス に Left() や Right() があります。
MFC を使っていなければ、
strnset(), strcpy() あたりを使えば出来ると思います。

渡り鳥 2002/12/24(火) 14:33:19
そうか( ̄□ ̄;)
またはやとちりで恥かいてしまった(;^_^A
皆さんフォローありがとうございますm(__)m

PATIO 2002/12/24(火) 16:33:51
ちょっと一言だけ。
VC++で処理を行う場合、MFCを使うかどうかによってコードの内容が
結構変わってきます。
MFCを使うのであれば、今自分が処理したい内容にはどのクラスを使うべきなのか
という所から考えなくてはなりません。
逆に使うべきクラスが割れれば、自然とメソッドもわかってくるんですけれど。

要するに単にC++の教科書を読んでも解決しないと言うことです。
逆にMFCを使わないのであれば、普通にC言語でやるように標準関数を使う手もあります。
ただ、この為にはCの標準関数にどんな物があるのかを調べる必要がでてきます。
標準関数はCの文法とは別の次元の問題です。
文法が理解できた上で必要な別の知識と言うことになります。(これについてはC++も同じ)

古いスレッドには追加発言できません。