数値の一部の値を取り出す・変換する – プログラミング – Home

数値の一部の値を取り出す・変換する
 
通知
すべてクリア

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


Est
 Est
(@Est)
ゲスト
結合: 22年前
投稿: 1
Topic starter  

最近、VC++を使いはじめました。
今までVBの方を使っていましたが、やはり違いが多く、毎日苦戦しております。

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

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

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

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

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

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


引用解決済
トピックタグ
渡り鳥
 渡り鳥
(@渡り鳥)
ゲスト
結合: 23年前
投稿: 14
 

ビット演算子 & や | を使います.

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

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

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


返信引用
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

変数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);


返信引用
西風
 西風
(@西風)
ゲスト
結合: 23年前
投稿: 14
 

VB はよく知りませんが、
数値というより 0 と 1 の並んだ文字列ですかね?

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


返信引用
渡り鳥
 渡り鳥
(@渡り鳥)
ゲスト
結合: 23年前
投稿: 14
 

そうか( ̄□ ̄;)
またはやとちりで恥かいてしまった(;^_^A
皆さんフォローありがとうございますm(__)m


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

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

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました