0
.NET 코드에서 zlib 압축 데이터 (RFC 1950)에 트레일러로 4 바이트 Adler-32 값을 추가해야합니다. 내가 4 바이트 무엇입니까 방법Adler-32 출력이 예상 값과 일치하지 않습니다.
private static readonly uint Modulus = 65521;
public static int Adler32(byte[] data, int offset, int length) {
uint a = 1, b = 0;
for (int counter = 0; counter < length; ++counter) {
a = (a + (data[offset + counter])) % Modulus;
b = (b + a) % Modulus;
}
return unchecked((int)((b << 16) + a));
}
그리고 여기 : 여기 내 C# 기능입니다 실제 ZLIB 압축 된 데이터를 검토에서,
byte[] data = { 227, 228, 225, 5, 0 }; // compressed data
int adler32 = Adler32(data, 0, data.Length);
byte b1 = (byte)((adler32 >> 24) & 0xFF);
byte b2 = (byte)((adler32 >> 16) & 0xFF);
byte b3 = (byte)((adler32 >> 8) & 0xFF);
byte b4 = (byte)((adler32 >> 0) & 0xFF);
문제는이다, 예상 바이트가 있어야된다 {0, 67, 0, 35}하지만 내가 얻는 값은 {10, 177, 2, 174}입니다. 내가 잘못하고있는 것은 무엇인가? 문안 인사.
추신 : 관심있는 사람들을 위해 zlib 압축에 대한 실제 입력은 {9, 12, 13}입니다.