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 ?
Message
par Psycode » ven. 27/août/2004 17:20
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 » ven. 27/août/2004 17:25
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
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » ven. 27/août/2004 17:27
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 » ven. 27/août/2004 19:08
@oliv : certes, mais ca fait toujours un gros paquet de ligne
@nico : tres interessant ce code !!
Wait And See...
nico
Messages : 3702 Inscription : ven. 13/févr./2004 0:57
Message
par nico » ven. 27/août/2004 23:15
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!!??
filperj
Messages : 395 Inscription : jeu. 22/janv./2004 1:13
Message
par filperj » ven. 27/août/2004 23:38
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 » ven. 27/août/2004 23:58
Ok, je fais peut être une opération non conforme avec un type long!
Merci
LavaLava
Messages : 173 Inscription : dim. 28/mars/2004 17:42
Localisation : Provence
Message
par LavaLava » dim. 12/sept./2004 22:26
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]