2012-02-19 7 views
0

私はcrc32を計算してint32を返すコードを探しますが、私はfintが返すuintまたはhexaまたはstringを見つけました。私はcrc32をintに変換しようとしましたが、intであるには大きすぎました。 返すcrc32を計算する方法を知っていますか?int32 ??CRC32 return int32

また、このリンクのコードを変更することもできます。コードはhexaの代わりにint32を返しますか? http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net

おかげで、 チャニ

+0

http://stackoverflow.com/questions/1131843/how-do-i-convert-uint-to-int-in-c –

+0

私がuintからintに変換すると、時には負の値を返すので、それはチェックサムですか? ???多分2文字列は、変換のために同じcrc32を返します。 –

+0

@Chanipoz CRC32には明らかに衝突がありますが、符号付きintにキャストしても新しい衝突は発生しません。衝突が全く起こらないようにするには、128ビット以上の長さの暗号化ハッシュを使うべきですが、当然のことながら 'Int32'には当てはまりません。 – CodesInChaos

答えて

5

使用unchecked((Int32)someUInt32)。それは負の数を返すことができますが、それは予想されます。それは結局のところCRC32であり、CRC31ではありません。

なぜ16進数に言及しているのか分かりません。リンクしたコードでは16進数は使用されません。それはちょうどUInt32byte[]を使用します。

+0

リンクでは、 'cc54a3'のようなヘキサを含むコードを返します。 UInt32とbyte []は内側の関数でのみ使用されます。 –

関連する問題