파일의 내용을 확인하기 위해 체크섬 (CRC16 CCITT)을 구현해야합니다. 체크섬은 < < 및 >> 연산자와 그물에서 사용할 수있는 많은 예제 덕분에 C 또는 Java로 구현하기가 다소 쉽습니다.아무 것도 없을 때 비트 시프트 ... 비트 시프트 연산자
문제는 ... 내 체크섬 계산은 VBScript에서 구현되어야합니다.
이 언어에 대한 나의 경험은 거의 없지만 내 이해에 따르면 VBScript에서 비트 시프트를 수행하기 위해 제공된 것은 없습니다. 그러므로 저는 의 곱셈과 나눗셈에 의존합니다.음수 값을 제외하고는 잘 작동합니다.
나는 몇 가지 테스트를 수행했으며 VBScript는 16 비트 정수를 2의 보수로 처리한다고 생각합니다.
1 : 누군가이 사실을 (VBScript의 2의 보수) 확인할 수 있습니까? MSDN 웹 사이트에서 정확한 정보를 찾지 못했습니다.
Q2 : 음수가 2의 보수로 코딩되면 간단한 수학 연산으로 비트 시프트 (오른쪽 및 왼쪽)를 수행 할 수 있습니까?
.
고마워, 나는 '1'과 '0'의 배열이나 VBScript에서 java/c 앱을 호출하는 정수처럼 다루기를 정말로 피하고 싶다. 값이 때때로 때문에 16 비트를 초과 한 나는 마스크했다 : 위의 코드에 대한
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
참고 :
편집이 도움을 주셔서 감사합니다, VBScript를에서 오른쪽 시프트의 내 구현을 검색 할 수 있습니다 오버플로를 피하기 위해 사용되지 않는 비트 (AND 65535
).
이 코드를 나눠 주셔서 너무 감사합니다! 나는 32 비트를 제외하고 똑같은 것을 필요로했다. 이것은 당신의 코드로하기 쉽다. :) 나는 CRC32를 구현하고있다. :) –