Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - hacktiger

#1
Programación C/C++ / me ayudan con vb a c++
16 Septiembre 2012, 04:06 AM
Este codigo quisiera pasarlo a c++ para probarlo pero no pude , quisiera ayuda si pueden hecharle un vistazo :)

http://forum.ragezone.com/f144/changing-crc32-code-875483/

Original en vb

Option Explicit On
Option Strict On

<System.Diagnostics.DebuggerStepThrough()> _
Friend Class CRC32

   Private crc32Table() As Integer
   Private Const BUFFER_SIZE As Integer = 1024I

   Friend Function GetCrc32(ByRef stream As System.IO.FileStream) As Integer
       Dim crc32Result As Integer = &HFFFFFFFF

       Dim buffer(BUFFER_SIZE) As Byte
       Dim readSize As Integer = BUFFER_SIZE
       Dim count As Integer = stream.Read(buffer, 0I, readSize)
       Dim i As Integer
       Dim iLookup As Integer

       Do While (count > 0I)
           For i = 0I To count - 1I
               iLookup = (crc32Result And &HFF) Xor buffer(i)
               crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And &HFFFFFF   ' nasty shr 8 with vb :/
               crc32Result = crc32Result Xor crc32Table(iLookup)
           Next i
           count = stream.Read(buffer, 0I, readSize)
       Loop
       Return Not (crc32Result)
   End Function

   Friend Function GetCrc32String(ByRef stream As System.IO.FileStream) As String
       Return String.Format("{0:X8}", GetCrc32(stream))
   End Function

   Friend Sub New()
       ' This is the official polynomial used by CRC32 in PKZip.
       ' Often the polynomial is shown reversed (04C11DB7).
       Dim dwPolynomial As Integer = &HEDB88320
       Dim i, j As Integer

       ReDim crc32Table(256I)
       Dim dwCrc As Integer

       For i = 0I To 255I
           dwCrc = i
           For j = 8I To 1I Step -1I
               If (dwCrc And 1I) > 0I Then
                   dwCrc = ((dwCrc And &HFFFFFFFE) \ 2I) And &H7FFFFFFF
                   dwCrc = dwCrc Xor dwPolynomial
               Else
                   dwCrc = ((dwCrc And &HFFFFFFFE) \ 2I) And &H7FFFFFFF
               End If
           Next j
           crc32Table(i) = dwCrc
       Next i
   End Sub
End Class


Lo que pasea c++

#include <fstream>
#include <iostream>
using namespace std;
const int BUFFERSIZE1 = 1024;

class CRC32
{
private:

int crc32Table[];
   //const int BUFFERSIZE1 = 1024;

   int GetCrc32(ifstream& stream)
    {
       
int crc32Result = 0xFFFFFFFF;

BYTE buffer[BUFFERSIZE1];
int readSize = BUFFERSIZE1;
//stream.read( (char*)buffer, readSize);
int count = stream.get();
int i;
int iLookup;

       while (count > 0)
{
for(i = 0; i<= count - 1;i++)
{
               iLookup = (crc32Result & 0xFF) ^ buffer[i];
               crc32Result = 5; //((crc32Result & 0xFFFFFF00) \ 0x100) & 0xFFFFFF;/*1*/
               crc32Result = crc32Result ^ crc32Table[iLookup];
           }

//stream.read(buffer, readSize);
           count = stream.get();
       }
       return !(crc32Result);
}

   const char* GetCrc32String(ofstream& stream)
{
       //Return String.Format("{0:X8}", GetCrc32(stream))
return NULL;
   }

   void New(){
       
//' This is the official polynomial used by CRC32 in PKZip.
       //' Often the polynomial is shown reversed (04C11DB7).
       int dwPolynomial = 0xEDB88320;
       int i, j;

       int crc32Table[256];
       int dwCrc;

       for(i = 0; i<256;i++)
{
           dwCrc = i;
for(j = 8; j>-1; j--)
{
if((dwCrc & 1) > 0)
{
                   dwCrc = 5;//((dwCrc & 0xFFFFFFFE) \ 2) & 0x7FFFFFFF;/*2*/
                   dwCrc = dwCrc ^ dwPolynomial;
}
               else
{
                   dwCrc = 5; //((dwCrc & 0xFFFFFFFE) \ 2) & 0x7FFFFFFF;/*3*/
               }
           }
           crc32Table[i] = dwCrc;
       }
   }
};


las lineas que marque con /*numero*/ son las que el compilador me dice "illegal escape sequence", me ayudarian?