From: dee on 14 Jan 2010 15:19 Subject: From: deepthi <gdd0014(a)londonmet.ac.uk> Dear Sir, I am trying to calculate the FCS Feild of a MAC Frame (IEEE 802.11-2007 p.70). bits='0000010000110000100000000000011100000011110001101100101011100101100110000000000001100111100010101101111011101101100110001000100010001000100010001000100010001000100010000000000100000011000010110001001100011011001000110010101100110011001110110100001101001011010100110101101101100011011010110111001101111011100000111000101110010011100110111010001110101011101100111011101111000011110010111101000110001001100100011001100110100001101010011011000000001000010001000000110000010100001011000101110010010100110001010010010110110' I am using a slightly modified code d/loaded from http://www.cs.washington.edu/homes/dhalperi/useful.html#LATEX -------------------------------------- function ret = crc32(bits) % receives string of characters (class char) from main program poly = [1 de2bi(hex2dec('EDB88320'), 32)]' % generates the poly from CRC32 bits = bits(:); bits=str2num(bits) % converts characters to numbers for type compatibility- i added this line % Flip first 32 bits bits(1:32) = 1 - bits(1:32); % Add 32 zeros at the back bits = [bits; zeros(32,1)]; % Initialize remainder to 0 rem = zeros(32,1); % Compute the CRC32 for i = 1:length(bits) rem = [rem; bits(i)]; %#ok<AGROW> if rem(1) == 1 rem = mod(rem + poly, 2); end rem = rem(2:33); end % Flip the remainder before returning it ret = 1 - rem; ret=num2str(ret); % converts back to chars before passing back to main program - i added this line end ---------------------------------------- I cannot fully understand how this works. But, I feel the output is not correct. When I calculated the poly for edb88320 manually it gives 1110 1101 1011 1000 1000 0011 1110 0000 which is different to the output for poly in the program. I have spent 2 weeks trying to understand how crc-32 works and how this works, but it seems that more i look at it, more trouble I am getting into now. Can someone pls explain your code or check where I am wrong? Thank you very much Deepthi
|
Pages: 1 Prev: difficulty in recognizing a variable in a function Next: String in function input |