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

Code : Tout sélectionner

c$=Chr(PeekB(*Buffer+i)) 
z= Asc(c$)
ç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 :x

@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!!?? 8O

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 :D

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]