jnbrunet
Messages postés258Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention13 novembre 2012
-
19 nov. 2006 à 05:34
NairodDorian
Messages postés130Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention18 août 2008
-
22 nov. 2006 à 14:26
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
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;
NairodDorian
Messages postés130Date d'inscriptionlundi 26 juin 2006StatutMembreDernière intervention18 août 2008 19 nov. 2006 à 14:58
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
jnbrunet
Messages postés258Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention13 novembre 2012 19 nov. 2006 à 23:37
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)).
jnbrunet
Messages postés258Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention13 novembre 2012 20 nov. 2006 à 22:33
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!