Seite 1 von 1

Unsigned Integer

Verfasst: 19.05.2007 16:07
von PBuser
Hallo zusammen

um eine vorhande DLL richtig ansprechen zu können benötige ich
unsigned integer: C-Deklaration: UINT8 UINT16 UINT32
ich muss diese an die DLL weitergeben und bekomme diese zurück.


In der PBHilfe habe ich gelesen das PB keine unsigned int unterstützt.

Werden unsigned Integer in PB aufgenommen (vielleicht Rev. 4.03)?

Gibt es einen Trick um in PB mit unsigned Int umzugehen?

Danke

Verfasst: 19.05.2007 16:19
von Kaeru Gaman
ob ein typ signed oder unsigned ist, ist letztendlich nur eine frage der ausgabeform.
im speicher selber verhält sich ein signed exact wie ein unsigned,
also normalerweise merkt man den unterschied nicht.

um unsigned-ausgabe zu ermöglichen, benutzt man einfach einen größeren typ,
und eine Bitwise AND-verknüpfung, um aus dem vorzeichenbit ein wertebit zu machen.

Code: Alles auswählen

Debug "--- uint8 ---"
uint8.b = 224         ; > +127
Debug uint8
ausg8.w = uint8 & $FF ; größeren typen zur ausgabe benutzen
Debug ausg8

Debug "--- uint16 ---"
uint16.w = 47111      ; > +32767
Debug uint16
ausg16.l = uint16 & $FFFF ; größeren typen zur ausgabe benutzen
Debug ausg16

Debug "--- uint32 ---"
uint32.l = 3123456789  ; > +2147483647
Debug uint32
ausg32.q = uint32 & $FFFFFFFF ; größeren typen zur ausgabe benutzen
Debug ausg32

Verfasst: 20.05.2007 09:14
von Little John
Ich hätte gedacht, dass eine Zuweisung wie

Code: Alles auswählen

uint8.b = 224         ; > +127
einen "Overflow error" verursachen würde. Dass das nicht passiert, ist ja schon eine "halbe Unterstützung" für vorzeichenlose Variablen -- sehr angenehm.

Gruß, Little John

Verfasst: 21.05.2007 09:45
von PBuser
@Kaeru Gaman

Vielen Dank für die Antwort.

Hat mir sehr weitergeholfen!