Как использовать этот класс Crc32 в моем собственном коде

#c# #textbox #byte #checksum #crc32

#c# #текстовое поле #байт #контрольная сумма #crc32

Вопрос:

Мне нужно использовать этот класс: Источник: http://www.sanity-free.com/12/crc32_implementation_in_csharp.html

 public class Crc32 {
        uint[] table;

        public uint ComputeChecksum(byte[] bytes) {
            uint crc = 0xffffffff;
            for(int i = 0; i < bytes.Length;   i) {
                byte index = (byte)(((crc) amp; 0xff) ^ bytes[i]);
                crc = (uint)((crc >> 8) ^ table[index]);
            }
            return ~crc;
        }

        public byte[] ComputeChecksumBytes(byte[] bytes) {
            return BitConverter.GetBytes(ComputeChecksum(bytes));
        }

        public Crc32() {
            uint poly = 0xedb88320;
            table = new uint[256];
            uint temp = 0;
            for(uint i = 0; i < table.Length;   i) {
                temp = i;
                for(int j = 8; j > 0; --j) {
                    if((temp amp; 1) == 1) {
                        temp = (uint)((temp >> 1) ^ poly);
                    }else {
                        temp >>= 1;
                    }
                }
                table[i] = temp;
            }
        }
    }
}
  

У меня есть массив байтов, и мне нужно отобразить контрольную сумму CRC32 этого массива
в текстовом поле в виде шестнадцатеричного представления при нажатии кнопки. Например:

 byte [] my_bytes = {0xAA, 0xBB, 0xCC, 0x11, 0x22, 0x33};
textBox1.Text = // the checksum of my_bytes as hex
  

Не могли бы вы помочь с этим, поскольку я все еще новичок в программировании.

Комментарии:

1. В чем проблема? Вам нужно знать, как форматировать результат?

2. Результат форматирования не проблема, моя проблема в том, что я не знаю, как передать свой байтовый массив в класс, как его построить….

Ответ №1:

Предполагая, что я правильно понял ваш вопрос, вы не понимаете, как вызвать метод внутри класса.

Сначала вам нужно будет создать экземпляр вашего класса в и object , затем вы можете вызывать методы внутри класса.

 byte [] myBytes = {0xAA, 0xBB, 0xCC, 0x11, 0x22, 0x33};
var crc32Instance = new Crc32();
var resultingBytes = crc32Instance.ComputeChecksumBytes(myBytes);
var byteString = String.Concat(Array.ConvertAll(resultingBytes , x => x.ToString("X2")));
textBox1.Text = byteString// the checksum of my_bytes as hex
  

Я бы посоветовал взглянуть на некоторые ресурсы для начинающих, чтобы лучше понять объектно-ориентированное программирование на C #.

Комментарии:

1. Вы правильно поняли мой вопрос, и я очень рад, что код сработал идеально, именно так, как мне было нужно. Спасибо за предложение, вашу помощь и время.

2. Рад, что смог помочь. Желаю удачи в вашем путешествии (в обучении программированию). Придерживайтесь этого, и я уверен, у вас все получится.