Lade...
 

CX_STRING::FromBytes

CX_STRING::FromBytes

Beschreibung:

Diese Methode setzt den Inhalt des CX_STRINGs anhand des übergebenen Byte-Vektors. Von den INTEGER-Werten(4 Byte) des Byte-Vektors wird nur das Byte mit der geringsten Wertigkeit beachtet (Also 0 - 255 oder 0x00 - 0xFF). Sollte also der Wert 0xFFDECE31 im Vektor auftauchen, dann würde die Methode dies als 0x31 interpretieren, was im ASCII-Zeichensatz für die "1" steht. 0x00 wird als Ende der Zeichenkette angesehen und alle nachfolgenden Bytes werden nicht in den CX_STRING aufgenommen.

Da nur das Byte der niedrigsten Wertigkeit betrachtet wird, zählt auch 0x12345600 als Null-Byte und somit als Zeichenkettenende.

Ab ClassiX 4.7.0 werden alle Bytes in der Codepage UTF-8 interpretiert (vorher Windows-1252). Dies ist wichtig, wenn Sonderzeichen aus dem Bereich 0x80 - 0xFF genutzt werden. Darin unterscheiden sich die Zeichensätze. Falls die Bytesequenz ein ungültiges UTF-8-Zeichen ergibt, wird eine Fehlermeldung ausgegeben.

Das unterste Byte auf dem Stack wird zum ersten Zeichen des Strings. In dem unteren Codebeispiel wird der Vektor also von links nach rechts in einen String umgewandelt. 

Achtung: FromBytes ist damit nicht symmetrisch zu GetBytes, der Vektor muss voher per Revert umgedreht werden.
Code-Beispiel:
Var(string) CreateTransObject(CX_STRING) -> string [ 0xE2 0x80 0x9E 0x44 0x69 0x65 0x73 0x20 0x69 0x73 0x74 0x20 0x65 0x69 0x6E 0x20 0x54 0x65 0x78 0x74 0xE2 0x80 0x9C ] string Call(FromBytes) string // -> CX_STRING(„Dies ist ein Text“)
Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_STRING Ein String-Objekt
  Top-1 ]  
  Top-2 INTEGER n. Byte
  Top-3 INTEGER n-1. Byte
  ... ... ...
  Top-(n+2) INTEGER 2. Byte
  Top-(n+1) INTEGER 1. Byte
  Top-(n+2) [  
Stack(Out) Top - -
Funktionsaufruf: Call(FromBytes)