Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hex to Dec bei Vee 8.5 geändert (Vee6/7)
19.08.2008, 10:10
Beitrag: #1
Hex to Dec bei Vee 8.5 geändert (Vee6/7)
Hallo,

hab in Vee 6.0 die Funktion "From String-> Read TEXT x HEX" um eine HexZahl in eine DezimalZahl zu konvertieren (mit Vorzeichen).

Das selbe Programm wirft mir jetzt die Dezimalzahl ohne Vorzeichen raus
Vee6.0: FFFFFFF0 -> -16
Vee8.5: FFFFFFF0 -> 4294967280

Wenn ich bei Files -> Default Preferences -> Execute Mode Vee6/7 einstellt funktioniert es wieder, bei Mode 8.5 nicht.

von 6 zu 8.5 wurden zusätzlich neue Variablen eingeführt, aber warum die alten verändert bzw. keine Option eingefügt wie man die Daten haben will.
Oder gibt es diese Funktion und ich hab sie übersehen?

Gruß
Sven
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.08.2008, 11:18
Beitrag: #2
 
Diese Fkt hast du eigentlich selbst gerade beschrieben: den execute mode...
In Vee8.5 wurden einige Bugs aus den Vorversionen geaendert, und es ist mehr auf die MS VStudio Syntax angepasst- da gab es dann kleine Brueche in der Abwaertskompatibilitaet- aber Verbesserungen fuer die Zukunft ;-)

Schau mal in die Readme ...

Aber ich muesste das genaue Beispiel von dir mal checken, vielleicht ist da ja ein Bug in 8.5.
Stell doch mal dein Prog hier rein ....

Aber was ist denn 16*16*16*16*16*16*16*16-16 ?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.08.2008, 17:12
Beitrag: #3
 
Hab ein Screenshot davon:

im ExeMode Vee6.0 stimmt die -16, da das erste Bit das Vorzeichen ist.
im ExeMode Vee8.5 macht er kein Vorzeichen mehr und schreibt die Zahl komplett.

Was mir noch aufgefallen ist im bei ExeMode Vee6.0 kommt eine Int32 raus,
bei Vee8.5 eine Int64.


Gruß
Sven


Angehängte Datei(en) Thumbnail(s)
       
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
20.08.2008, 17:07
Beitrag: #4
 
Da ist der Unterschied. Stell in den prefs auf Mode vor 8, dann ist da wieder int32.

Ist halt eine Sache der Definition...

Aus dem Help file::

HEX Format
READ TEXT HEX transactions are of this form:

READ TEXT VarList HEX ARRAY:NumElements

-or-

READ TEXT VarList HEX MAXFW:NumChars ARRAY:NumElements

VarList is a single Integer variable or a comma-separated list of Integer variables.

NumChars specifies the number of 8-bit characters that can be read in an attempt to build a number.

NumElements is a single expression or a comma-separated list of expressions that specifies the dimensions of each variable in VarList. If the transaction is configured to read a scalar, the ARRAY keyword does not appear in the transaction. ARRAY:1 is a one-dimensional array with one element. VEE makes a distinction between scalars and one-dimensional arrays containing only one element.

READ TEXT HEX transactions interpret incoming characters as hexadecimal digits representing 64-bit, two's complement integers. The valid range for these integers is -9223372036854775808 decimal to +9223372036854775807 decimal.

If the transaction specifies a MAX NUM CHARS (MAXFW), the hexadecimal number read may contain more than 64 bits of data. For example, assume VEE reads the following hexadecimal data:

ad2469Ff725BCdef37964 hexadecimal data

using this transaction:

READ TEXT x HEX MAXFW:32

VEE reads all the digits in the hexadecimal data, but uses only the last 16 digits (9Ff725BCdef37964) to build a number for the value of x. This is because each digit corresponds to 4 bits and the hexadecimal number must be stored in an VEE Integer, which contains 64 bits. 16 hexadecimal digits yields exactly 64 bits. There is no possibility of overflow.

Note

In VEE 6&7 and prior modes, READ TEXT HEX transactions interpret incoming characters as octal digits representing 32-bit, two's complement integers. The valid range for these integers is 2 147 483 647 to -2 147 483 648 decimal.

Assume VEE reads the same hexadecimal data, but with a different MAX NUM CHARS, as in this transaction:

READ TEXT x HEX MAXFW:3 ARRAY:7

In this case, the transaction reads the same data and interprets it as seven Integers, each comprising three hexadecimal digits.

If the transaction specifies DEFAULT NUM CHARS, it will continue to read characters until it builds enough numbers to fill each variable in VarList. Each number will read exactly 8 hexadecimal digits. Linefeed characters will not terminate number building early.

Assume VEE reads the same hexadecimal data, but with DEFAULT NUM CHARS, as in this transaction:

READ TEXT x HEX ARRAY:2

In this case, the transaction reads the same data and interprets it as two Integers, each comprising eight hexadecimal digits. The last five digits (37946) are not read.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:




Partnerforen: LabVIEWForum.de| DIAdem-Forum.de| Machine-Vision-Forum.de| goMatlab.de| VEEforum.de