Page 1 sur 1
Lire un bit : MISSION POSSIBLEMENT IMPOSSIBLE
Publié : ven. 27/août/2004 17:20
par Psycode
Mais quel cinéma pour lire 1 bit !!!!!!!!!!!!!!!!!!!!!! :
Code : Tout sélectionner
c$=Chr(PeekB(*Buffer+i))
z= Asc(c$)
b$=Bin(z)
c$="00000000"+b$
b$=Right(c$, 8)
c$=Mid(b$,NumeroDuBit,1)
valeur = Val(c$)
A moins qu'il existe une instruction bien caché dans le manuel...
Publié : ven. 27/août/2004 17:25
par Oliv
Dans ton code quand tu fais
ça revient à faire z = PeekB(*Buffer+i) puisque Chr() convertit la valeur en caractère et le caractère eest ensuite convertit en code ASCII donc tu te retrouves avec la même chose
Publié : ven. 27/août/2004 17:27
par nico
il faut utiliser un masque:
Ex:
Code : Tout sélectionner
a.b=%00100110
b.b=1
For i =1 To 8
c=a & b
b<<1
If c=0
Debug 0
Else
Debug 1
EndIf
Next
Publié : ven. 27/août/2004 19:08
par Psycode
@oliv : certes, mais ca fait toujours un gros paquet de ligne
@nico : tres interessant ce code !!
Publié : ven. 27/août/2004 23:15
par nico
Je viens de me rendre comte d'un truc:
Avec une valeur supérieur à 128 où négatif, je n'affiche que des 1
Je sais que c'est un nombre signé mais pour moi, je devrais avoir la même chose qu'il soit signé ou pas.
Code : Tout sélectionner
a.b=152
b.b=1
For i =1 To 8
c=a & b
b<<1
If c=0
Debug 0
Else
Debug 1
EndIf
Next
Pour moi, y a un problème!!??

Publié : ven. 27/août/2004 23:38
par filperj
En remplaçant "c" par "c.b", ça semble résoudre le problème.
Mais on dirai bien un bug, en effet.
Publié : ven. 27/août/2004 23:58
par nico
Ok, je fais peut être une opération non conforme avec un type long!
Merci

Publié : dim. 12/sept./2004 22:26
par LavaLava
Peut-être que j'arrive trop tard mais voila ...
Code : Tout sélectionner
B = PeekB(*Buffer+i) & (1 << NumeroDuBit) )
If B > 0
B = 1
Endif
[/code]