Ich schätze, Du machst wohl keinen Denkfehler. Es gibt da wohl einige Probleme mit BITAND ;-).
Hmm, man könnte - da Du den Einsatzzweck beschrieben hast und es somit klar ist, daß wir nur 8 Bit brauchen - einmal folgendes versuchen (es mag einfachere Weg geben, aber dieser müßte funktionieren):
/* test */
/* legen wir zunächst die Konstante für den Wert 255 fest. Das geht natürlich auch ohne die ganzen Funktionen, aber dies demonstriert die generelle Vorgehensweise, die auch bei Zhalen funktioniert, die vorher nicht bekannt sind :-) */
zahl255=255
zahl255=D2X(zahl255) /* erst ins hex-Format umwandeln ... */
zahl255=X2B(zahl255) /* ... und dann ins Binär-Format */
zahl255=RIGHT(zahl255,8,0) /* und nun reduzieren wir das Ganze auf die rechten 8 Bit */
say 'Die 255 Konstante:'zahl255
/* ... und nun die Konstante für 0 */
zahl0=0
zahl0=D2X(zahl0) /* erst ins hex-Format umwandeln ... */
zahl0=X2B(zahl0) /* ... und dann ins Binär-Format */
zahl0=RIGHT(zahl0,8,0) /* und nun reduzieren wir das Ganze auf die rechten 8 Bit und füllen es iw gehabt mit Nullen auf */
say 'Die 0 Konstante :'zahl0
/* jetzt holen wir uns die Zahl, die der Benutzer eingeben soll */
SAY "Bitte Zahl eingeben:"
PULL zahl
zahl = RIGHT(zahl, 3, 0) /*Die Zahl wird auf 3 Stellen mit Nullen aufgefüllt*/
zahl=D2X(zahl) /* auch diese Zhal wandeln wir ins Binär-Format */
zahl=X2B(zahl)
zahl=RIGHT(zahl,8,0) /* und wieder auf die 8-Bit Stellen trimmen */
wert255 = BITAND(zahl,zahl255,0)
wert0 = BITAND(zahl,zahl0,0)
SAY 'Zahl AND 255 :'wert255
SAY 'Zahl AND 0 :'wert0
exit 0
Ich hoffe, das Skript hilft weiter (und bitte nicht schlagen, wenn es einen besseren Weg gibt. Ich habe das nur gerade online eingetippt. Getestet ist es deswegen auch noch nicht ...).
ciao
Alex
[ Leser: 68 ] |