Lire un bit : MISSION POSSIBLEMENT IMPOSSIBLE

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Lire un bit : MISSION POSSIBLEMENT IMPOSSIBLE

Message 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...
Wait And See...
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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
Psycode
Messages : 131
Inscription : lun. 23/août/2004 18:47
Localisation : Jupiter ?

Message par Psycode »

@oliv : certes, mais ca fait toujours un gros paquet de ligne :x

@nico : tres interessant ce code !!
Wait And See...
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

En remplaçant "c" par "c.b", ça semble résoudre le problème.
Mais on dirai bien un bug, en effet.
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ok, je fais peut être une opération non conforme avec un type long!

Merci :D
LavaLava
Messages : 173
Inscription : dim. 28/mars/2004 17:42
Localisation : Provence

Message 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]
Répondre