begin process at 2012 02 15 16:42:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

VBA

 > 

et logique bit a bit


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

et logique bit a bit

samedi 6 mai 2006 à 22:46:55 | et logique bit a bit

FabulousF

Re-bonsoir :)

nouveau petit souci :)

dans ma fonction C j'ai une fonction qui prend en paramètre un "unsigned char *" et un entier

en VB j'ai donc converti le unsigned char * en "ByRef Byte()" .. l'entier en Integer

à un moment dans ma fonction C j'ai ceci, un et logique bit à bit (je pense que c'est ça, si c'est pas le cas n'hésitez pas à me le dire :D ) :
if inbuf[0]&0x01 ...

en VB j'ai mis ça en If (inbuf(0) And valByte) ...

Où valByte est la conversion hexa -> byte de "0x01" effectué grâce aux fonctions trouvée ici -même sur vbfrance :  http://www.vbfrance.com/codes/CONVERSION-BYTE-STRING-HEXA-DECIMAL_28355.aspx

or j'ai le droit à une erreur détectée par VB 2005 sur inbuf(0) And valByte  :

L'opérateur And n'est pas défini pour les type Byte et Tableau à 1 Dimension de Byte

si quelqu'un peut m'aider, merci :)

dimanche 7 mai 2006 à 10:07:52 | Re : et logique bit a bit

Stephane

Membre Club
slt inbuf est un tableau de byte ? si oui, ben, donne une plus grande partie du code, parce que ca marche tres bien chez moi. tu es bien VB6 ou .NET ? +
dimanche 7 mai 2006 à 10:37:41 | Re : et logique bit a bit

FabulousF

voilà la fonction complète :)


unsigned char *uncompress_data(unsigned char *inbuf,int *buflen)
{
unsigned char *outbuf;
unsigned char packcode;
int a,b,c,len,offset;
int inlen,outlen,inpos,outpos;

/* length of data */
inlen=*buflen;
outlen=(inbuf[2]<<16)+(inbuf[3]<<8)+inbuf[4];
outbuf=malloc(outlen);
if (outbuf==NULL) { printf("Insufficient memory.\n"); abort(); }

 
/* position in file */
 if (inbuf[0]&0x01) inpos=8; else inpos=5;
outpos=0;


Ici j'ai donc fait en VB :

Dim valByte() As Byte
hextobyte("0x01",valByte)
If (inbuf(0) And valByte) Then ....


sachant que comme inbuf est dans le code C en unsigned char *, je l'ai mis en paramètre de ma fonction en ByRef inbuf() As Byte



/* main decoding loop */ while ((inpos<inlen)&&(inbuf[inpos]<0xFC))
{
packcode=inbuf[inpos];
a=inbuf[inpos+1];
b=inbuf[inpos+2];

if (!(packcode&0x80)) {
len=packcode&3;
mmemcpy(outbuf+outpos,inbuf+inpos+2,len);
inpos+=len+2;
outpos+=len;
len=((packcode&0x1c)>>2)+3;
offset=((packcode>>5)<<8)+a+1;
mmemcpy(outbuf+outpos,outbuf+outpos-offset,len);
outpos+=len;
}
else if (!(packcode&0x40)) {
len=(a>>6)&3;
mmemcpy(outbuf+outpos,inbuf+inpos+3,len);
inpos+=len+3;
outpos+=len;
len=(packcode&0x3f)+4;
offset=(a&0x3f)*256+b+1;
mmemcpy(outbuf+outpos,outbuf+outpos-offset,len);
outpos+=len;
}
else if (!(packcode&0x20)) {
c=inbuf[inpos+3];
len=packcode&3;
mmemcpy(outbuf+outpos,inbuf+inpos+4,len);
inpos+=len+4;
outpos+=len;
len=((packcode>>2)&3)*256+c+5;
offset=((packcode&0x10)<<12)+256*a+b+1;
mmemcpy(outbuf+outpos,outbuf+outpos-offset,len);
outpos+=len;
}
else {
len=(packcode&0x1f)*4+4;
mmemcpy(outbuf+outpos,inbuf+inpos+1,len);
inpos+=len+1;
outpos+=len;
}
}

/* trailing bytes */ if ((inpos<inlen)&&(outpos<outlen)) {
mmemcpy(outbuf+outpos,inbuf+inpos+1,inbuf[inpos]&3);
outpos+=inbuf[inpos]&3;
}

if (outpos!=outlen) printf("Warning: bad length ? %d instead of %d\n",outpos,outlen);
*buflen=outlen;
return outbuf;
}


Cette discussion est classée dans : fonction, vb, byte, bit, logique


Répondre à ce message

Sujets en rapport avec ce message

Appel de DLL à partir de VB: problème d'arguments [ par Taoufik77 ] Bonjour tout le monde,je développe une appli VB qui fait appel à une fonction dll écrite en visual C++. lorsque je fais le debugging, je me rends -com Fonction SLEEP dans VBA ou VB [ par cipango ] Bonjour à tous,   J'ai un problème avec la fonction SLEEP : Quand je fais  « SLEEP 1 » 20 Fonction BitBlt .. [ par Kite37 ] Bonjour !En regardant de nombreux code de jeux (référence a ceux de EBArtSoft par exemple :p) j'ai trouvé une fonction graphique qui m'interresse beau fonction contient du filtre automatique en VB [ par allbundy ] Bonjour,Je voudrais recréer la fonction contient du filtre automatique en VBA.Je voudrais regarder si dans ma variable1 contient une partie du texte d Question difficile [ par tbbuim1 ] Bonjour à tous, J'ai tenté veinement de récupérer une valeur affichée dans une appli VB et de la mettre en critère dans une requête ACCESS. Je m'exp Thread VB.net [ par lscar ] Bonjour En fait j'aimerais utiliser des threads dans mon application alors j ai commencé à faire des tests j'ai declaré 2 threads qui lancent une meme [VB.NET] Lancer fonction java en VB [ par cucrapock ] Bonjour,je cherche à lancer une petite fonction java à partir d'un programme en VB et de récupérer un résultat mais je ne trouve pas le moyen de les f Probléme passage vb6 vers vb Net [ par dieuzorro ] Bonjour,J'ai une Dll codé en vb6 et un projet exemple en vb6 pour s'en servir. Je veut m'en servier en vb net. J'ai porté le projet vb6 vers vb net ma Appeler une fonction pl/sql sous Vb.net [ par hicens ] Bonjour,Je veux appeler une procedure stockée pl/sql sous forme de fonction et je veux récuperer le résulatat par vb.net, sachant ke j'utilise vb.net Fonction perso en vb [ par tounetta ] Bonjour @ tous,je suis nouveau dans ce forum et je voudrais avoir votre avis ...Dans un fichier Excel, contenant des objets OLE « Excel.sheet.8 », je


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,448 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales