
[ このメッセージへの返事 ]
[ 返事を書く ]
[ home.html ]

投稿者:
2FD @ 210.130.216.151 on 97/10/30 18:15:32
In Reply to: basic言語を理解している人へ質問
posted by 滅 @ ee07.ee.nagano-nct.ac.jp on 97/10/30 17:16:38
> VAL(”&h”+HEX$(INT(w.data)/&H100)) AND &HFF
> このbasicをC言語にするとどうなるのでしょうか?w.dataは変数です。
これ、MSのVisual Basicのソースですよね?これを前提とします。
このコードは変数 w.data に入っている数値の上位16ビット部分を取り出したい
だけですね。ただ、int関数は、割り算の結果が整数で無い場合、ちょっと不思議な
丸め処理を行うので、これを作った人は困って一旦16進文字列に変換して戻す
事によって小数点以下を切り捨てたんだと思います。
無理矢理Cで書けば次のようになります。
char wdata[256];
int wkint;
char wkbuff[256];
wkint = atoi(wdata); //変数の中身を整数に変換
wkint = wkint / 0x100; //変数の中身を 256 で割る
sprintf(wkbuff, "0x%.2X", wkint); //16進文字列に変換
wkint = HEX2INT(wkbuff) //16進文字列を整数に変換
//atoiでは16進文字列は変換不能なので独自の関数を作成する必要有り
こんな所ですかね?Cは久しぶりなので、間違っているかもしれません。(^_^;

|