의 내가 여기 adler32의 코드를 발견은 http://developer.classpath.org/doc/java/util/zip/Adler32-source.htmladler32 자바 비트 입력
그러나 내 업데이트 코드는
private int a = 1, b = 0;
public void update(byte[] buf, int offset, int len)
{
for (int i = offset; i < len; i++) {
a = (a + buf[i]) % MOD_ADLER;
b = (b + a) % MOD_ADLER;
}
}
를 다음과 같습니다 그리고 0xff
과 buf[i]
이 이미 8 바이트 인 것으로 이해할 필요가 없습니다. int
으로 승격됩니다. a
은 int
이고 형식 승격은 byte
의 값을 변경해서는 안됩니다. 그것은 없이는 작동하지 않는 것처럼 좀 더 자세한 내용을 놓칠 수 있습니다, 나는 계산 된 값으로 테스트했습니다 java.util.zip.Adler32
답변 주셔서 감사하지만, 답변을 주셔서 감사합니다, 그러나 그것은 예를 들어, 음수로 결과 값에만 중요합니다 내 테스트
byte a = -4;
int n1 = a & 0xff;
int n2 = a;
out.printf(" a %4d %s\n", a,Integer.toBinaryString(a));
out.printf("n1 %4d %s\n",n1,Integer.toBinaryString(n1));
out.printf("n2 %4d %s\n",n2,Integer.toBinaryString(n2));
인쇄
a -4 11111111111111111111111111111100
n1 252 11111100
n2 -4 11111111111111111111111111111100
[Java에서 value & 0xff는 무엇을 할 수 있습니까?] (http://stackoverflow.com/questions/11380062/what-does-value-0xff-do-in-java) – leonbloy