Accueil > Forum > > > > Convertion c++ à VB
Convertion c++ à VB
dimanche 19 novembre 2006 à 05:34:35 |
Convertion c++ à VB

jnbrunet
|
Bonjours, Je ne suis pas très connaissant en c++. Est-ce que quelqu'un pourrait me traduire cette fonction en Visual Basic 6.0 ou .NET. P.S.: le pucData est en général à l'adresse 0C en hexadécimal dans le fichier.
// pucData - pointer to the byte stream of the .d2s file
// iSize - number of bytes in the stream ( filesize )
void Checksum( unsigned char *pucData, int iSize )
{
// delete old checksum at offset 0x0C (0C est l'adresse des valeurs changer. On doit mettre les 8 bits
*((unsigned int*)(pucData+12)) = 0;
// init new checksum with 0
unsigned int uiCS = 0;
// this is the whole checksum calculation
for ( int i = 0; i < iSize; ++i )
uiCS = (uiCS<<1) + pucData[i] + ( uiCS & 0x80000000 ? 1 : 0 );
// write new checksum to stream
*((unsigned int*)(pucData+12)) = uiCS;
}
Voiçi un autre fonction en c++ qui devrait faire la même chose que celui du haut, mais n'est pas réaliser par le même programmeur: Autre fonction identique: void Character::calculateChecksum() { // make sure we start at the beginning of the file std::rewind(charfile);
Checksum = 0;
unsigned char data, overflow = 0;
for (unsigned long i = 0; i < FileSize; ++i) { // doubles the checksum result by left shifting once Checksum <<= 1;
std::fread(&data, sizeof(data), 1, charfile);
Checksum += data + overflow;
if (Checksum < 0) overflow = 1; else overflow = 0; }
// rewind the file in case we need to read/write to it again std::rewind(charfile);
Je ne vous force pas!! C'est seulement un petit service que je vous demande!!
J'ai beau lire et relire les 2 fonctions, je ne les comprend pas! En tout cas, merci à ceux qui auront la gentillesse de m'aider!
Merci! -Jn-
|
|
dimanche 19 novembre 2006 à 14:58:53 |
Re : Convertion c++ à VB

NairodDorian
|
Bonjour,
Convertion de la methode deux :
Imports System.IO
Dim FileSize As Integer ' doit etre defini dans une autre methode Dim br As BinaryReader ' doit etre initialiser dans une autre methode
Sub CalculateCheckSum()
' Exemple : Initialisation variable br ' Dim fs As New FileStream("C:\\fichier.bin", FileMode.OpenOrCreate) ' Dim br As BinaryReader = New BinaryReader(fs) br.BaseStream.Position = 0
Dim checksum As Integer Dim data As Byte Dim overflow As Byte
For i As Long = 0 To i < FileSize data = br.ReadByte() checksum = checksum + data + overflow If checksum < 0 Then overflow = 1 Else overflow = 0 End If Next
br.BaseStream.Position = 0
End Sub
|
|
dimanche 19 novembre 2006 à 23:37:45 |
Re : Convertion c++ à VB

jnbrunet
|
Salut, merci pour cette réponse.
Lorsque je l'aissai sur un fichier, checksum me donne 0. Pourtant le fichier n'est pas vide... Pour trouver la grosseur, j'utilise FileSize = CInt(FileLen(FilePath)).
Au fait, que fait cette ligne en c? :
Checksum <<= 1;
Merci
-Jn-
|
|
lundi 20 novembre 2006 à 08:40:20 |
Re : Convertion c++ à VB

Renfield
|
il multiplie par deux checksum...
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
lundi 20 novembre 2006 à 14:16:30 |
Re : Convertion c++ à VB

jnbrunet
|
Merci de la réponse, mais ce n'est pas ça. J'ai résolu le problème.
Pour ceux qui veulent le savoir, chiffe << 1 est un bit shift. Il pousse toute les bits de un vers la gauche dans l'octet sélectionné. Par exemple,
00110010 << 1 donne : 01100100
Dans l'algorithme, on additionne tous les bits de 2 octets, ensuite on "bitshift" de 1 vers la gauche le résultat, et on continue. Ce qui donne en vb:
FileSize = CInt(FileLen(FilePath)) br.BaseStream.Position = 0
Do While i < FileSize data = br.ReadByte() ' on lit l'octet
checksum = checksum << 1 'on bitshift vers la gauche de 1
checksum = checksum + data + overflow ' on addition l'octet séléctionné
If checksum < 0 Then ' on vérifi s'il y a dépassement overflow = 1 Else overflow = 0 End If i = i + 1 Loop
-Jn-
|
|
lundi 20 novembre 2006 à 14:23:09 |
Re : Convertion c++ à VB

Renfield
|
00110010 => 50 en base 10 01100100 => 100 en base 10
on a donc bien multiplié par deux...
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
lundi 20 novembre 2006 à 22:33:51 |
Re : Convertion c++ à VB

jnbrunet
|
Oui c'est bien une multiplication, mais je demandais une explication... pas un synonyme. À ce que je sache, bitshift ne veux pas dire multiplication. Je voulais comprendre ce que faisais le "<<". Oui ca revient bien à une multiplication, mais ce n'est pas la définition exacte. Dans un examen j'aurais eu un beau 0!
-Jn-
|
|
mardi 21 novembre 2006 à 08:46:15 |
Re : Convertion c++ à VB

Renfield
|
ok sur la définition....
j'étais resté sur le "que fait cette ligne" et t'ai donc donné une "lecture" de la ligne
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
mercredi 22 novembre 2006 à 14:26:41 |
Re : Convertion c++ à VB

NairodDorian
|
Zut j'ai oublié checksum = checksum << 1 dans ma réponse :P
|
|
Cette discussion est classée dans : int, to, checksum, unsigned, pucdata
Répondre à ce message
Sujets en rapport avec ce message
Allocation de mémoire a une structure [ par KurpeusLondon ]
Bonjour, J'essaye d'initialiser des structures par un appel de fonction qui retourne l'adresse mémoire de la structure fraichement crée. Lorsque je co
unsigned to int [ par wislam2007 ]
Salut j'ecrit dans mon code : string a="machin"; int taille = a.length(); ça passe pas : erreur c2440 :error unsignet to int :( merci pr l aide. A v
OpenGl bloqué par une Thread !? [ par spinzero ]
Bonjour J'ai une animation (win32) OpenGL à laquelle j'essaie d'intégrer de la synthese sonore avec la lib STK.(...a
Ecriture d'un fichier BMP "à l'ancienne" [ par MaxSoldier ]
Salut à tous ! N'ayant pas pus résoudre mon prblème seul, je m'en réfère à vous !Je m'explique, je cherche à écrire un fichier BMP à l'ancienne, c'est
Problème en tête bitmap [ par piroman14 ]
Slt tt le monde!Je rencontre un petit problème dans mon algorithme. En effet, je n'arrive pas à coder l'en-tête d'une image bitmap correctement. J'obt
c++ [ par gilles8111 ]
salut,je suis débutant en c++,j'ai jusqu'ici toujours programmé en java. Mon problème est le suivant: j'ai implémenté une classe CSpieler dont le cons
quadtree [ par pulsaqui ]
Bonjour; je suis un débutant en programation C++ . Je cherche une implantation d'une class Quadtree class Quadtree { public: Quadtree()
Envoie de données vers un serveur en langage C [ par esmee ]
Bonjour,Besoin d'aide,Débutant en programmation , j'aimerai modifié ce code ci-dessous qui fonctionne bien :write(to_server_socket,"Momo",15);read(to
c++ [ par zizota ]
bonsoir,je suis débutante en c++ et j'ai trouvé un code sur netmais j'ai rien compriunsigned int index; unsigned long int count[2]; index = (u
unsigned long int [ par W@$h! ]
saluje pense que tout le monde sait faire ça : int valeur = 4;printf("%i", valeur);mais quelqu'un peut'il me dire comment faire pour afficher un unsig
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|