私はいくつかのWindowsインストーラの中でVBScriptを使用して戻りコードを解析しています。私は正しくビット単位のものをやっていたことを確認したかったので、私はいくつかのEcho
文を書き留め、そのうちの一つは、私が期待した結果を生じなかったことが判明:VBScriptのビット単位がなぜ1つのケースで失敗するのですか?
WScript.Echo (&H01010101) ' prints 16843009 (0x01010101). Correct!
WScript.Echo (&H01010101 And &Hff000000) ' prints 16777216 (0x01000000). Correct!
WScript.Echo (&H01010101 And &H00ff0000) ' prints 65536 (0x00010000). Correct!
WScript.Echo (&H01010101 And &H0000ff00) ' prints 16843008 (0x01010100). What's happening here?
WScript.Echo (&H01010101 And &H000000ff) ' prints 1 (0x00000001). Correct!
第1のみが持っているように見えること下の2バイトをマスクしました。さて、確かに、And
が得られる前にそれを保持することができる最小のintに変換される可能性がありますので、マスクはマスクされているものよりも短くなっていますが、 ?
私はそれが動作する最上位バイトで何かを投げる場合:
WScript.Echo (&H01010101 And &Hf000ff00) ' prints 256 (0x01010100).
、ここで他のいくつかの例です:
ソートのそれはWORDに保存されたばかりだという考えを支持WScript.Echo (&H01010101 And &H0000f0ff) ' prints 16842753 (0x01010001).
WScript.Echo (&H01010101 And &Hf00000ff) ' prints 1 (0x00000001).
、DWORDではなく、私はまだ何が起こっているのか本当に理解していない。
大きな説明。 – Lankymart