ポインターについて

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: ポインターについて

Re: ポインターについて

by NoWest » 2005年11月15日(火) 16:35

> Dim temp As Byte
> temp=&H60
> とした場合、変数tempの中身は
> 01000000
> となっているはず。
> ここで、tempの先頭から2byteのメモリの内容を知りたいのですが
> どうしたらよいのでしょう?
多分、仰りたいのは先頭から2bit目だと思いますが、
どうでしょうか?

あと&H60は二進数では01100000だと思います。

> 私は、変数のポインタは変数の先頭アドレスを示しているはずだから
> tempのポインタを-6シフトさせてGetByteでポインタからデータ
> を取り出すと
> 00000001
> になっているはずだとおもって、
> Print GetByte(VarPtr(temp)-6) And &H1
> こんな事してみたのですが、表示は0
確かにポインタは変数の先頭アドレスを示していますが、
変数内の何bit目に0か1が立っているかを調べることには使いません。

何ビット目が0に成っているか1に成っているかを調べるには
ビットマスクビットシフトを使います。

例えば、問題のように2bit目が0なのか1なのかを調べるには

コード: 全て選択

Dim temp As Byte
temp=&H60
Print (temp<<2)>>8
のようにしたり

コード: 全て選択

Dim temp As Byte
temp=&H60
Print (temp and &H40)>>6
というようにします。

ポインターについて

by YS » 2005年11月15日(火) 13:04

Dim temp As Byte
temp=&H60
とした場合、変数tempの中身は
01000000
となっているはず。
ここで、tempの先頭から2byteのメモリの内容を知りたいのですが
どうしたらよいのでしょう?

私は、変数のポインタは変数の先頭アドレスを示しているはずだから
tempのポインタを-6シフトさせてGetByteでポインタからデータ
を取り出すと
00000001
になっているはずだとおもって、
Print GetByte(VarPtr(temp)-6) And &H1
こんな事してみたのですが、表示は0

素直に
Print (temp And &H40)/&H40
としたほうがよいのでしょうか?

ページトップ