u8-->u4
Das was RoLe vorschlägt, ist nur eine von mehreren Möglichkeiten, Deine Aufgebenstellung ist überheupt nicht eindeutig.
RoLe nimmt an, daß in der U8-Zahl in Bit 3 (oder 4?) eine Vorzeicheninformation für die neue "I4" Zahl steckt. Kann sein, muß aber nicht. Die Anführungszeichen habe ich verwendet, weil es dieses Zahlenfomat in LabVIEW gar nicht gibt. Eine echte 4-Bit-Zahl (Bereich -8 .. +7) mit Vorzeicheninformation in BIT 3 ist in LabVIEW (und auch in keiner anderen mir bekannten Sprache) als interne Repräsentation nicht möglich.
Du mußt also lückenlos von 0..255 ansagen, (am besten als Tabelle mit 2 Spalten 255 Zeilen, linke Spalte = alt U8-Zahl , rechte Spalte = neue Zahl I8, [I4 ist nicht möglich]), wie die Konvertierung erfolgen soll. Dann ist es ein Leichtes, Deinen Wunsch punktgenau zu erfüllen.
Beispiele:
0..7 --> 0..7
8..15 --> -1..-8
16..23 --> 0..7 (oder was weiß ich)
...
...
oder:
0..7 --> 0..7
8..255 --> 7
Anmerkungen zur Terminologie:
"8 bit Dezimalzahl unwandeln": Die Interne Repräsentation ist immer binär, da gibt es nichts mehr umzuwandeln. Es gibt lediglich als Darstellungmöglichkeiten in den Anzeigen die Optionen Dezimal, Binär usw.
"boolsches Array mit 4 Zeilen": Der Begriff Zeile wird in Verbindung mit 2D-Arrays verwendet. Meintest Du das, oder meintest Du nur einen 1D-Array mit 4 Elementen? (Dafür gibt es die Funktion Boolsches Array in Zahl).
|