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}です。私が間違っていることは何ですか?よろしく。
PS:実際のzlib圧縮への入力は{9,12,13}です。