Variablen definition ab 0 möglich?
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb
Variablen definition ab 0 möglich?
Hallo zusammen,
ich hab folgende kleine Frage:
es ist ja so, dass alle PB-Variablen im negativen Bereich beginnen und dann ins positive gehen.
Geht es auch, dass ein Byte z.B. von 0 - 255 statt von -127 - 127 geht??
Oder kann das PB momantan noch nicht??
Oder soll es das auch nich können??
Ich fände es z.B. für RGB-Farbwerte sehr sinnvoll, wenn ich nicht jedes mal einen Word mit seinen 2Bytes verwenden müsste und ein Byte bereits reichen würde.
Kann mir da wer weiterhelfen??
ich hab folgende kleine Frage:
es ist ja so, dass alle PB-Variablen im negativen Bereich beginnen und dann ins positive gehen.
Geht es auch, dass ein Byte z.B. von 0 - 255 statt von -127 - 127 geht??
Oder kann das PB momantan noch nicht??
Oder soll es das auch nich können??
Ich fände es z.B. für RGB-Farbwerte sehr sinnvoll, wenn ich nicht jedes mal einen Word mit seinen 2Bytes verwenden müsste und ein Byte bereits reichen würde.
Kann mir da wer weiterhelfen??
Re: Variablen definition ab 0 möglich?
Schonmal ausprobiert?blbltheworm hat geschrieben: es ist ja so, dass alle PB-Variablen im negativen Bereich beginnen und dann ins positive gehen.
Geht es auch, dass ein Byte z.B. von 0 - 255 statt von -127 - 127 geht??
Oder kann das PB momantan noch nicht??
Code: Alles auswählen
byte.b = $FF
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- freedimension
- Admin
- Beiträge: 1987
- Registriert: 08.09.2004 13:19
- Wohnort: Ludwigsburg
- Kontaktdaten:
Re: Variablen definition ab 0 möglich?
Was genau möchtest du machen? Wenn du die Werte, z.B. für ein Bild speichern möchtest wäre es natürlich Speicherverschwendung hier ein Word oder gar ein Long zu verwenden. Anders sieht es aus wenn du rechnen willst, hier zahlt es sich aus, mit Longs zu arbeiten da diese schneller vom Prozessor verarbeitet werden (ist sozusagen sein Spezialgebiet).blbltheworm hat geschrieben:Ich fände es z.B. für RGB-Farbwerte sehr sinnvoll, wenn ich nicht jedes mal einen Word mit seinen 2Bytes verwenden müsste und ein Byte bereits reichen würde.
Bei der Speicherung eines Bildes würde ich persönlich mit Pointern und den bitweisen Operatoren arbeiten da diese, vernünftig programmiert, schneller sind als jedes Array.
Siehe auch: http://www.robsite.de/php/pureboard-arc ... ian+filter
- Sylvia
- verheiratet<br>1. PureGolf-Gewinner
- Beiträge: 487
- Registriert: 29.08.2004 09:42
- Wohnort: Old Europe
Scheiss draufblbltheworm hat geschrieben:Ich fände es z.B. für RGB-Farbwerte sehr sinnvoll, wenn ich nicht jedes mal einen Word mit seinen 2Bytes verwenden müsste und ein Byte bereits reichen würde.
Ausser der Zuweisung bringt das auch nichts. Bleibt immer noch signed...!Danilo hat geschrieben:Schonmal ausprobiert?
byte.b = $FF
PB kann's halt nicht.
Basic Pur = PureBasic
Darüber brauchen wir nicht zu reden, steht ja sogar in der ReferenzSylvia hat geschrieben:Ausser der Zuweisung bringt das auch nichts. Bleibt immer noch signed...!Danilo hat geschrieben:Schonmal ausprobiert?
byte.b = $FF
PB kann's halt nicht.
das PB nur vorzeichenbehaftete Datentypen kennt.
Ich fand die Zuweisung aber dringend erforderlich und
konnte das damals durchsetzen - und habe das schon
öfters brauchen können.
Wenn ich schreibe 'byte.b = 255' dann kommt es darauf
an was ich damit machen möchte. Ich kann dieses Byte in
eine Datei schreiben, ich kann den Wert ausgeben:
Code: Alles auswählen
byte.b = 255
Debug StrU(byte,#BYTE)
wie unsigned verwenden:
Code: Alles auswählen
byte.b = 200
byte + 23
Debug StrU(byte,#BYTE)
wenn diese Zuweisung und StrU() nicht möglich wäre.
Zusammen mit der Umwandlung in einen größeren Datentyp
und dem bitweisen UND ist somit für Byte und Word schon
ganz gut was möglich.
Das ändert natürlich nichts daran das PB keine unsigned
Datentypen unterstützt. Man sollte diese Möglichkeiten aber
kennen, da es manchmal recht hilfreich sein kann - mehr
wollte ich damit nicht sagen.
Oftmals ist es einfach eine Sache der Interpretation des
Programmierers ob er den Inhalt der Variable als signed
oder unsigned ansieht.
Der entscheidende Punkt ist dann die Ausgabe, z.B. mit Str() oder StrU().
Auch das ausmaskieren mit dem bitweisen UND sollte ein
PureBasic-Programmierer kennen. Kann vielleicht mal helfen.
Ein kleines Beispiel welches den großen Unterschied zeigt:
Code: Alles auswählen
byte.b = 1
While byte & $FF > 0
Debug StrU(byte.#BYTE)
byte + 1
Wend
nun das "& $FF" gibt es nur Zahlen bis 127 aus.
Für Dich, Sylvia, ist das natürlich alles normal. Neueinsteiger
bei PB kommen aber meist nicht auf sowas und sollten deshalb
darauf aufmerksam gemacht werden, so daß sie dann wenigstens
ein kleines bißchen besser arbeiten können.
Mir war der Wertebereich damals sehr wichtig für DataSections
in denen ich Bytes habe.
Code: Alles auswählen
Data.b $FF, $80, $CA, $FA
möglich, und das hat mich schon sehr gestört - weshalb es
geändert wurde und uns somit ein paar mehr Möglichkeiten
und Freiheiten gibt.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
- blbltheworm
- Beiträge: 217
- Registriert: 22.09.2004 19:36
- Wohnort: Auf der schönen Schwäbischen Alb