PDA

Visualizza la versione completa : Help codice da C a VB


abzedblade
28-02-2007, 21:26
Come è possibile tradure il seguente codice C in un più compresibile VB6 o VB.net:

/************************************************** **************
CRC16 16bit CRC
CCITT CRC16
Cyclical Redundancy Check
polynomial: X^16 + X^12 + X^5 + 1
(used in XMODEMCRC communications protocol)
************************************************** ***************/
union _crc {
unsigned char b[2]; /* high byte is b[1], low byte is b[0] */
unsigned w; /* word value */


unsigned crc16(len, start_crc, p)
int len; /* length of p */
unsigned start_crc; /* starting value, initialize to zero */
unsigned char *p; /* pointer to memory of which to calculate crc */
{
union _crc crc;
int i;
crc.w = start_crc; /* set up starting value of CRC */
while (len-- >0)
{
crc.b[1] ^= *p++; /* xor value of next byte into HIGH byte of CRC */
/* this is for an 80x86 processor */
for(i=0;i<8;++i)
if (crc.w & 0x8000) /* high bit set?? */
{
crc.w <<= 1; /* left shift one */
crc.w ^= 0x01021; /* XOR value 0x1021 */
}
else
{
crc.w <<= 1; /* left shift one */
}
}
return (crc.w);
}

char hello[] = “Hello World!”;
unsigned crc;
crc = crc16(strlen(hello), 0, hello);
printf(“%04x\n”,crc);

oregon
28-02-2007, 21:46
Beh ... in VB esiste l'operatore XOR e lo scorrimento a sinistra e a destra li fai con la moltiplicazione e divisione per 2 ... non hai le union ma non dovrebbe essere un problema ...

Ci hai provato?

P.S. Riformula il titolo ... vedi il regolamento

abzedblade
28-02-2007, 23:23
No ma se mi puoi fare una esempio ti ringrazio molto ...
... d'altra parte sarebbe meglio per me se mi traducessi completamente il codice esclusa l'ultima parte sul printf che ho capito (sempre se non chiedo troppo). Grazie.

oregon
28-02-2007, 23:27
Beh ... insomma ... non e' questo lo spirito del forum (si da' una mano, non tutto il braccio ...) e poi non ci vuole anche tempo per fare una cosa del genere ...

abzedblade
28-02-2007, 23:28
Comunque rileggendo il regolamento non mi pare di aver violato qualche regola ... dimmi se sbaglio. ciao.

oregon
28-02-2007, 23:33
Non l'hai letto abbastanza bene ... punti 2, 3 e 6 ... ma non e' questo il fatto importante ... infatti ho parlato di "spirito" del forum ...

Una cosa e' correggere una o due istruzioni o una impostazione di un codice proposto, altra cosa e' volere la "pappa pronta" ... quello puo' essere un lavoro ...

alka
01-03-2007, 14:28
La domanda verte su VB6/VB.NET, quindi andrebbe inserita nell'apposita area, come indicato nel Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=973887).

Inoltre, utilizzerei un titolo più significativo e cercherei, riprendendo lo "spirito del forum" citato da Oregon, di fare qualche tentativo di conversione, richiedendo aiuto su difficoltà specifiche.

Ciao! :ciauz:

Loading