LINUX.ORG.RU

История изменений

Исправление impfp, (текущая версия) :

«сложно реализовать на других языках»

Хрен его знает, хрен его знает… Наверное, я волшебник, раз смог :)

Пацкаль

function qspCRC( data: PByte; len: Integer ): Integer;
var
  ptr: PByte;
begin
  result := 0;
  ptr := data;
  while len > 0 do begin
    result := (qspCRCTable[(result and $FF) xor (ptr^)] xor result shr 8) xor $D202EF8D;
    inc(ptr);
    dec(len)
  end
end;                         

ЦШарп

        public unsafe static uint qspCRC (byte* data, int len)
        {
            byte* ptr = data;
            uint crc = 0;
            while (len-- > 0) {
                crc = (qspCRCTable [(crc & 0xFF) ^ (*ptr)] ^ crc >> 8) ^ 0xD202EF8D;
                ptr++;
            }
            return crc;
        }

ЗЫ почитал наконец тред, тут много таких, так что тема невозможности или лсожности как-то не раскрыта

Исправление impfp, :

«сложно реализовать на других языках»

Хрен его знает, хрен его знает… Наверное, я волшебник, раз смог :)

Пацкаль

function qspCRC( data: PByte; len: Integer ): Integer;
var
  ptr: PByte;
begin
  result := 0;
  ptr := data;
  while len > 0 do begin
    result := (qspCRCTable[(result and $FF) xor (ptr^)] xor result shr 8) xor $D202EF8D;
    inc(ptr);
    dec(len)
  end
end;                         

ЦШарп

        public unsafe static uint qspCRC (byte* data, int len)
        {
            byte* ptr = data;
            uint crc = 0;
            while (len-- > 0) {
                crc = (qspCRCTable [(crc & 0xFF) ^ (*ptr)] ^ crc >> 8) ^ 0xD202EF8D;
                ptr++;
            }
            return crc;
        }

Исправление impfp, :

«сложно реализовать на других языках»

Хрен его знает, хрен его знает… Наверное, я волшебник, раз смог :)

Пацкаль

function qspCRC( data: PByte; len: Integer ): Integer;
var
  ptr: PByte;
begin
  result := 0;
  ptr := data;
  while len > 0 do begin
    result := (qspCRCTable[(result and $FF) xor (ptr^)] xor result shr 8) xor $D202EF8D;
    inc(ptr);
    dec(len)
  end
end;                         

ЦШарп

        public unsafe static uint qspCRC (byte* data, int len)
        {
            byte* ptr = data;
            uint crc = 0;
            while (len-- > 0) {
                crc = (qspCRCTable [(crc & 0xFF) ^ (*ptr)] ^ crc >> 8) ^ 0xD202EF8D;
                ptr++;
            }
            return crc;
        }

И результат одинаковый выплевывают

Исходная версия impfp, :

«сложно реализовать на других языках»

Хрен его знает, хрен его знает… Наверное, я волшебник :)

Пацкаль

function qspCRC( data: PByte; len: Integer ): Integer;
var
  ptr: PByte;
begin
  result := 0;
  ptr := data;
  while len > 0 do begin
    result := (qspCRCTable[(result and $FF) xor (ptr^)] xor result shr 8) xor $D202EF8D;
    inc(ptr);
    dec(len)
  end
end;                         

ЦШарп

        public unsafe static uint qspCRC (byte* data, int len)
        {
            byte* ptr = data;
            uint crc = 0;
            while (len-- > 0) {
                crc = (qspCRCTable [(crc & 0xFF) ^ (*ptr)] ^ crc >> 8) ^ 0xD202EF8D;
                ptr++;
            }
            return crc;
        }

И результат одинаковый выплевывают