Cyclic redundancy check (CRC32) of a file

Discussion in 'Ruby' started by Paul Golea, Feb 23, 2009.

  1. Paul Golea

    Paul Golea Guest

    Hello,

    I try to calculate the CRC32 of a file with a script ruby, but I does
    not obtain the good result by comparison with many of the other software
    which already make this (in other programming language...), for example:
    http://www.codeproject.com/KB/recipes/crc32.aspx

    I use this script :
    _____________________

    require 'zlib'
    filetest = File.read 'image.jpg'
    puts Zlib.crc32(filetest, 0).to_s(16).upcase
    _____________________

    The result looks like well of an CRC32 but it is never good...

    I also try a pure ruby implementation with this code but it makes
    exactly the zlib.crc32 result... :
    _____________________

    def crc32(c)
    n = c.length
    r = 0xFFFFFFFF
    n.times do |i|
    r ^= c
    8.times do
    if (r & 1)!=0
    r = (r>>1) ^ 0xEDB88320
    else
    r >>= 1
    end
    end
    end
    r ^ 0xFFFFFFFF
    end

    filetest = File.read 'image.jpg'
    puts crc32(filetest).to_s(16).upcase
    _____________________


    Thank you very much to the person who will have the solution of my
    problem.
    --
    Posted via http://www.ruby-forum.com/.
     
    Paul Golea, Feb 23, 2009
    #1
    1. Advertising

  2. Paul Golea

    F. Senault Guest

    Le 23 février 2009 à 10:44, Paul Golea a écrit :

    > Thank you very much to the person who will have the solution of my
    > problem.


    If you are under Windows, you need to open the file in binary mode.
    (Well, arguably, you always need to open binary files in binary mode).

    For instance :

    Z:\>ruby -v
    ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]

    Z:\>irb
    >> require "zlib"

    => true

    >> f = File.read('bibi.jpg') ; nil

    => nil
    >> Zlib.crc32(f,0).to_s(16)

    => "332c7941"

    >> f = nil

    => nil
    >> File.open('bibi.jpg', 'rb') { |h| f = h.read } ; nil

    => nil
    >> Zlib.crc32(f,0).to_s(16)

    => "5ba68c3c"

    And the second CRC corresponds to what other tools give me.

    Fred
    --
    You ask me if I've known love
    And what it's like to sing songs in the rain Well, I've seen love come
    And I've seen it shot down I've seen it die in vain
    Shot down in a blaze of glory (Bon Jovi, Blaze of Glory)
     
    F. Senault, Feb 23, 2009
    #2
    1. Advertising

  3. Paul Golea

    Paul Golea Guest

    F. Senault wrote:
    >
    > And the second CRC corresponds to what other tools give me.
    >
    > Fred


    Excellent!
    I didn't know that File.read opened "badly" files under Windows...

    Thank you very much.
    --
    Posted via http://www.ruby-forum.com/.
     
    Paul Golea, Feb 23, 2009
    #3
  4. On Feb 23, 2009, at 5:31 AM, Paul Golea wrote:

    > F. Senault wrote:
    >>
    >> And the second CRC corresponds to what other tools give me.
    >>
    >> Fred

    >
    > Excellent!
    > I didn't know that File.read opened "badly" files under Windows...
    >
    > Thank you very much.



    Change this:
    f = File.read('bibi.jpg') ; nil

    to this: (mode of 'r', not 'rb')
    f = nil
    File.open('bibi.jpg', 'r') { |h| f = h.read } ; nil

    And you'll get the same result. File.read is not the problem, but the
    use of text mode (which is the default). Under Unix, there is no
    difference between text mode and binary mode, but the line endings
    under Windows are \015\012.

    -Rob

    Rob Biedenharn http://agileconsultingllc.com
     
    Rob Biedenharn, Feb 23, 2009
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Jupiter49

    How to minimize /bin folder redundancy

    Jupiter49, Aug 20, 2003, in forum: ASP .Net
    Replies:
    0
    Views:
    308
    Jupiter49
    Aug 20, 2003
  2. Paul LeBlanc

    Re: How to minimize /bin folder redundancy

    Paul LeBlanc, Aug 21, 2003, in forum: ASP .Net
    Replies:
    1
    Views:
    309
    George Ter-Saakov
    Aug 21, 2003
  3. -
    Replies:
    3
    Views:
    367
    Antti S. Brax
    Mar 29, 2005
  4. Ericko
    Replies:
    1
    Views:
    520
  5. subscribe
    Replies:
    3
    Views:
    4,196
    Chris Uppal
    Nov 29, 2006
Loading...

Share This Page