2012-02-19 4 views
0

crc32를 계산하고 int32를 반환하는 코드를 찾습니다.하지만 func가 반환 된 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

감사합니다, Chani

+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'과 같이 hexa를 포함하는 코드 반환 문자열. UInt32 및 byte []는 내부 함수에서 사용됩니다. –