//я использую этот плагин паузы, который я просто записал
$.fn.pause = function(duration) {
$(this).animate({ dummy: 1 }, duration);
return this;
};
Вызов это как это:
$("#mainImage").pause(5000).fadeOut();
Примечание: Вам не нужен обратный вызов.
CRC32 является обратимым, только если исходная строка составляет 4 байта или меньше.
Кейд Ру прав насчет обращения CRC32.
Ссылки, которые вы упомянули, предоставляют решение для исправления CRC, ставшего недействительным, путем изменения исходного потока байтов. Это исправление достигается изменением некоторых (неважных) байтов и воссозданием исходного значения CRC.
Прочтите документ под названием «Обращение теории и практики CRC» .
Это C #:
public class Crc32
{
public const uint poly = 0xedb88320;
public const uint startxor = 0xffffffff;
static uint[] table = null;
static uint[] revtable = null;
public void FixChecksum(byte[] bytes, int length, int fixpos, uint wantcrc)
{
if (fixpos + 4 > length) return;
uint crc = startxor;
for (int i = 0; i < fixpos; i++) {
crc = (crc >> 8) ^ table[(crc ^ bytes[i]) & 0xff];
}
Array.Copy(BitConverter.GetBytes(crc), 0, bytes, fixpos, 4);
crc = wantcrc ^ startxor;
for (int i = length - 1; i >= fixpos; i--) {
crc = (crc << 8) ^ revtable[crc >> (3 * 8)] ^ bytes[i];
}
Array.Copy(BitConverter.GetBytes(crc), 0, bytes, fixpos, 4);
}
public Crc32()
{
if (Crc32.table == null) {
uint[] table = new uint[256];
uint[] revtable = new uint[256];
uint fwd, rev;
for (int i = 0; i < table.Length; i++) {
fwd = (uint)i;
rev = (uint)(i) << (3 * 8);
for (int j = 8; j > 0; j--) {
if ((fwd & 1) == 1) {
fwd = (uint)((fwd >> 1) ^ poly);
} else {
fwd >>= 1;
}
if ((rev & 0x80000000) != 0) {
rev = ((rev ^ poly) << 1) | 1;
} else {
rev <<= 1;
}
}
table[i] = fwd;
revtable[i] = rev;
}
Crc32.table = table;
Crc32.revtable = revtable;
}
}
}