Ecriture dans un fichier

cs_HeleneB Messages postés 5 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 15 octobre 2005 - 17 mai 2005 à 16:41
cs_HeleneB Messages postés 5 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 15 octobre 2005 - 19 mai 2005 à 11:13
Bonjour,

je voudrais ecrire dans un fichier des nombres binaire qui ne correspond à aucun type definit (32 bits non signé).
Que doit-je faire?
merci d'avance

7 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
17 mai 2005 à 16:52
Open tonfichier For Binary As #1

Put #1,, tonnombre
close#1


Daniel
0
cs_HeleneB Messages postés 5 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 15 octobre 2005
18 mai 2005 à 08:55
Merci Daniel,

Pour sa je suis d'accord le nombre à ecrire je le recupere d'un TextBox quand je le recuper ces une information String .Je le convertie en quel format?

merci
0
cs_HeleneB Messages postés 5 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 15 octobre 2005
18 mai 2005 à 10:58
Attend!!
je reformule ma question je veux ecrire un nombre de 16bits non signé si j'uitlise CInt si le nombre est trop grand sa ne fonctionne pas.
merci
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mai 2005 à 11:29
ok je vois.

pourquoi pas rester en String alors ?

j'espère que tu n'as pas de nombres décimaux.

impossible de convertir un nombre supérieur à 2147483647 (à moins d'être en .Net et d'utiliser le 64 bits)

sinon bien obligé d'utiliser le négatif, un nombre supérieur à
2147483647 sera considéré comme négatif (en VB) l'important c'est qu'en
mémoire il est la même représentation, ensuite tout n'est qu'une
question d'interprétation.

comme on peut pas manipuler ces nombres avec du Long, on va utiliser le
Double comme intermédiaire et faire les corrections nécessaires.



Dim s As String

Dim d As Double

Dim M1 As Double

Dim M2 As Double

Dim x As Long



M1 = 2 ^ 31 - 1

M2 = 2 ^ 32



s = "2147483648"



d = CDbl(s)

If d > M1 Then d = d - M2

' MsgBox d



x = d

MsgBox x


Daniel
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mai 2005 à 11:33
désolé j'avais pas vu.

on était parti sur 32 bits, là tu me simplifie la vie.

avec du 16 bits ça passe sans problèmes dans un Long

maximum - 32768 à +32767

je te laisse faire la conversion...

c'est facile !!!!

Daniel
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
18 mai 2005 à 13:06
j'espère que t'as trouvé.

sinon je t'explique, supposons que tu as une chaîne avec la valeur
"65535" qui ne passe pas dans un Integer, mais qui passe très bien dans
un Long.

valeur en Hexa donnerait &HFFFF et serait interpréter -1 en 16 bits
signés, mais la représentation binaire est toujours la même.

en le passant dans un Long

Val-Long = CLng(s)

( valeur Hexa est &H0000FFFF)

on le convertit en négatif si nécessaire:

If Val-Long > 32767 Then Val-Long = Val-Long - 65536

(valeur Hexa = &HFFFFFFFF)

et là ça passe très bien en Integer:

Val-Integer = Val-Long

(valeur -1 en signés ou 65535 en non signé)



Daniel
0
cs_HeleneB Messages postés 5 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 15 octobre 2005
19 mai 2005 à 11:13
merci bcp Daniel


c'est super!!!!!

c'est la 1ere fois que j'uilise un forum je suis ravis peut etre à bientôt
0
Rejoignez-nous