ファイルの内容を確認するためにチェックサム(CRC16 CCITT)を実装する必要があります。チェックサムは、<<および>>演算子とネット上で利用可能な多くの例のおかげで、CまたはJavaでの実装がかなり簡単です。
問題は...私のチェックサム計算はVBScriptで実装する必要があります。
この言語での私の経験はほとんどありませんが、私の理解から、VBScriptでビットシフトを行うために提供されるものは何もありません。したがって、私は2による乗算と除算に依存しています。負の値を除いてうまく機能します。
私はいくつかのテストを実行しましたが、VBScriptは2の補数で16ビット整数を処理すると思います。
Q1:誰かが私にこれを確認できますか(VBScriptの2の補数)?MSDNWebサイトから正確な情報が見つかりませんでした。
Q2:負の数が2の補数でコード化されている場合、単純な数学演算でビットシフト(右と左)を行うことは可能ですか?
。
どうもありがとうございました。整数を「1」と「0」の配列として処理したり、VBScriptからjava/cアプリを呼び出したりするような煩わしさを避けたいと思います。
編集助けてくれてありがとう、VBScriptでの右シフトの私の実装を以下に見つけてください:
Function rightShift(value,bits)
Dim res
res = 65535 AND value
If value>=0 Then
res = res \ (2^bits)
Else If value=-1 Then
res = rightShift(res + 32768, bits - 1)
Else
res = rightShift(value \ 2 + 32768, bits - 1)
End If
End If
rightShift = res AND 65535
End Function
上記のコードについて注意してください。値が16ビットを超えることがあるため、オーバーフローを回避するために未使用のビットをマスクする必要がありました(AND 65535
)。