Bonjour à tous,
je dois apres extraction des données dans un fichier binaire convertir des mots de 4 octets en décimal.
Pour ce faire j ai crée une structure qur voici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
Public ils As trame_ILS
 
Public Type Word_ILS
    bPoidsFaibles As Byte
    bPoidsForts As Byte
    bPoidsFaibles1 As Byte
    bPoidsForts1 As Byte
 
End Type
 
Public Type trame_ILS
 
    type_ILS As Word_ILS
    num_ILS As Word_ILS
 
End Type
Jusque là tout va bien puisque j'arrive à rescupérer mes 4 octets que je viens ensuite stocker dans un buffer de la manière suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
With ils
 
 
 
        ils.num_ILS.bPoidsFaibles = buffer1(10)
        ils.num_ILS.bPoidsForts = buffer1(11)
        ils.num_ILS.bPoidsFaibles1 = buffer1(12)
        ils.num_ILS.bPoidsForts1 = buffer1(13)     
 
  ' ensuite je decode mon mot de 4 octets hexadecimal en decimal   
 
 
             type1 = ((ils.num_ILS.bPoidsForts1 * 256 * 256 * 256) + ils.num_ILS.bPoidsFaibles1 * 256 * 256) + ((ils.num_ILS.bPoidsForts * 256) + ils.num_ILS.bPoidsFaibles) 
 
 
 
   MsgBox type1
 
 
 
 
  End With
QUand je le décodage a la main je tombe bien sur la valeur désiré qui par exemple 885057083. J ai déclaré type1 en tant que long ( 32 bits). Et pourtant j ai un message d erreur " dépassement capacité".
Pourtant la valeur décimale est toujours positive donc je devrais declarer un unsigned mais j ai pas trouvé sous vb .
Je pense que c'est un probleme au niveau de la variable type1 mais je ne vois pas comment la déclarer autrement.
SI vous aveez des idées.
Merci