auf ein einzelnse bit in einer variabel kannst du folgendermassen zugreifen:
dim bla as byte
bla.0 --> erstes Bit
bla.1 --> zweites Bit
.
.
bla.7 --> achtes Bit
gruss bluesmash
hi
für eine kleine laufschrift habe ich ein programm in dem ich mehrere längere strings verwende in denen allerdings nur nullen oder einsen stehen also in etwa so
dim bla as string * 100
bla = "10010010001101010 ... usw"
ich würde viel lieber einfach folgendes schreiben dürfen
dimbla as bit * 100
nur leider lässt mich Bascom nicht. und wenn ich string verwende verschenke ich doch so viel speicher, das ein string doch 8bit pro zeichen verbraucht wo ich doch eigendlich mit einem bit genug hätte. wie komme ich also zu meinem bit-array??
vielen dank
auf ein einzelnse bit in einer variabel kannst du folgendermassen zugreifen:
dim bla as byte
bla.0 --> erstes Bit
bla.1 --> zweites Bit
.
.
bla.7 --> achtes Bit
gruss bluesmash
Meine Homepage:
www.bluesmash.roboterbastler.de
danke für deine schnelle antwort. nur leider bringt sie mich nicht wirklich weiter. ich weiss, dass wenn ich eine variable als byte deklariere sozusagen ein bit-array der länge 8 habe aber mich interessieren viel größere längen so ~200.
was auch nicht in frage kommt ist ein array aus bytes in dem ich dann jedes byte und seine acht bit einzeln abklapper, denn die langen ketten aus nullen und einsen lasse ich von einem anderen programm generieren und füge sie dann erst in Bascom ein.
wo is das Problem?
Ein Byte ist ja nix anderes als alle Kombinationen aus 0 und 1 in 8 Stellen.
Du kannst sehr wohl anstelle von &B00001010 in einem Array einfach 10 schreiben.
Oder auch Hexadezimal für 16 Bit (dann Variable als Word dimmen): &H0000000000001010
Is nicht das schnellste, sowas schreit eigentlich nach assembler
Code:dim byte_array(200) as byte ' reicht für 1600 bit dim arr_index as word dim bit_pos as byte dim counter as word ' alle Bit setzen (zum Beispiel) for counter = 0 to 1599 ' 200 * 8 -> 1600 Bit , also 0 - 1599 arr_index = counter / 8 ' arr_index = arr_index + 1 ' Bascom fängt tabellen mit 1 an bit_pos = counter AND &H0F ' byte_array(arr_index).bit_pos = 1 ' ein Bit setzen next
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
vielen dank für die antworten ich habe die sache nochmal genauer unter die lupe genommen und werde das ganze in nächster zeit mal in assembler probieren
gruß thomas
Lesezeichen