Das leidige UNSIGNED-Thema einmal anders ...

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Didelphodon
Beiträge: 360
Registriert: 18.12.2004 13:03
Wohnort: Wien
Kontaktdaten:

Das leidige UNSIGNED-Thema einmal anders ...

Beitrag von Didelphodon »

Hi!

Mir is schon klar, dass PB die Unsigneds nicht drauf hat, aber wofür zum Teufel ist dann jene Funktion tatsächlich da - ich orte da ja einen kleinen Zynismus PB-seits? :wink:

Auszug aus dem Hilfefile:

StrU()

Syntax

Ergebnis$ = StrU(Wert, Typ)
Beschreibung

Konvertiert eine vorzeichenlose Zahl in einen String.

Die folgenden 'Typen' sind möglich:
#Byte: Der Wert ist eine Byte-Zahl, im Bereich von 0 bis 255
#Word: Der Wert ist eine Word-Zahl, im Bereich von 0 bis 65536
#Long: Der Wert ist eine Long-Zahl, im Bereich von 0 bis 4294967296

Hinweis: Ganzzahlen (mit Vorzeichen) werden mit dem Befehl Str() und Fließkommazahlen mit dem Befehl StrF() konvertiert.


Anmerkung: Das ist keine rhetorische Frage, ich mein das Ernst. /:->

LG Didel
Das Leben ist ein sch*** Spiel, aber die Grafik ist irre!
Fighting for peace is like fuc*ing for virginity!
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Nein, es macht in sofern Sinn, da mittels dieses Befehls die eingegebene Variable unsigned wird. Siehe hier:

Code: Alles auswählen

byte.b = 130
Debug byte
Debug StrU(byte, 0)
Zuerst wird eine Bytevariable mit dem Wert 130 angelegt, geht nicht, da signed, somit ist der "wahre" Wert der Variable -126. Nutzt man aber den StrU() Befehl, erhält man als Rückgabewert den unsigned-Wert der Variable, in diesem Valle 130. Dies allerdings als String. Wenn man ihn als Zahl haben will muss ein Ergebnis = Val(StrU(zahl, type)) gesetzt werden. Dann macht es durchaus Sinn, diesen Befehl zu verwenden, denn dann könnte man (zwar sehr umständlich) unsigned Variablen nutzen, indem man vorher immer den StrU Befehl nutzt, damit PB umdenkt.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Sunny hat geschrieben:Ergebnis = Val(StrU(zahl, type))
[...]
dann könnte man (zwar sehr umständlich) unsigned Variablen
nutzen, indem man vorher immer den StrU Befehl nutzt,
Das funktioniert nur weil Deine Variable "Ergebnis" ein Long ist.

Man kann Byte und Word ganz leicht durch ausmaskieren in unsigned
umwandeln wenn man den nächsthöheren Typ nimmt, also Long:

Code: Alles auswählen

Ergebniss1 = zahl1.b & $FF   ; unsigned Byte in Long
Ergebniss2 = zahl2.w & $FFFF ; unsigned Word in Long
Deshalb siehst Du auch oft beim einlesen von unsigned Bytes
aus einer Datei:

Code: Alles auswählen

Wert = ReadByte() & $FF
Dein Umweg über 2 Stringfunktionen ist also nicht nötig.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten