Archiv verlassen und diese Seite im Standarddesign anzeigen : ich brauche sowas wie ein bit array
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
Bluesmash
24.09.2007, 17:21
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
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.
stefan_Z
24.09.2007, 20:09
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
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
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.