Re: basic言語を理解している人へ質問



[ このメッセージへの返事 ] [ 返事を書く ] [ 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は久しぶりなので、間違っているかもしれません。(^_^;