mem_get¶
mem_get ließt Bytes aus einem String und führt eine Datentyp-Konvertierung durch.
- rvValues = mem_get(ssString, pos, ssType, count)
- rvValues = mem_get(ssString, pos, ssType, count, nRecLen)
- rvValues = mem_get(ssString, pos, ssType, count, rvOptions)
- ssSubString = mem_get(ssString, pos, count)
Returnwert
rvValues ist ein Vektor von count Zahlenwerten oder ein String, wenn die
Funktion in der Form ssSubString = mem_get(ssString, pos, count)
aufgerufen
wurde.
Parameter
- ssString
ssString ist ein skalarer String.
- pos
pos ist eine Zahl zwischen 1 und
mem_len(ssString)
. Sie gibt den Offset im String an, ab dem gelesen werden soll.
- ssType
Der Datentyp der gelesen werden soll:
Typ
Beschreibung
„int8“ oder „char“
Ein Byte mit Vorzeichen (-127 bis 127).
„uint8“ oder „uchar“
Ein Byte ohne Vorzeichen (0 bis 255).
„wchar_t“
Ein UTF-16 Unicode-Zeichen (2 Bytes).
„int16“
16-bit Integer (2 Bytes).
„uint16“
16-bit vorzeichenloser (unsigned) Integer (2 Bytes).
„int32“
32-bit Integer (4 Bytes).
„uint32“
32-bit unsigned Integer (4 Bytes).
„int64“
64-bit Integer (8 Bytes). Da UniScript diesen Wert in einer double-Zahl speichert, sind im Ergebnis nur ca. 52 Bits gültig.
„uint64“
64-bit unsigned Integer (8 Bytes). Da UniScript diesen Wert in einer double-Zahl speichert, sind im Ergebnis nur ca. 52 Bits gültig.
„float“
32-bit Real-Zahl (4 Bytes).
„double“
64-bit Real-Zahl (8 Bytes).
- count
count ist die Anzahl an Werten die gelesen werden sollen.
- nRecLen
nRecLen ist die Anzahl der Bytes, die übersprungen werden sollen, um den nächsten Wert zu lesen (Abstand zwischen zwei Werten).
- rvOptions
rvOptions ist ein Vektor mit 4 Werten: [nRecLen, nBits, nBitOffset, bBigEndian].
nRecLen: Anzahl an Bytes, die übersprungen werden sollen, um den nächsten Wert zu lesen, falls count > 1. Default ist 0, wenn rvOptions nicht angegeben wird.
nBits: 0: Es wird die Größe des unter ssType angegebenen Datentyps verwendet, z. B. 32 für „int32“. 1 .. 64: Anzahl an Bits die gelesen werden sollen. Der Wert muß kleiner oder gleich der Größe von ssType sein, aber größer als der nächst kleinere Typ. Beispiel: Bei ssType gleich „int16“ kann nBits zwischen 9 und 16 liegen, bei ssType gleich „int32“ kann nBits zwischen 17 und 32 betragen.
nBitOffset: 0 .. 7. Default ist 0, wenn rvOptions nicht angegeben wird.
bBigEndian: 1: Es wird die Big Endian byte order (Motorola) verwendet, 0: Es wird die Little Endian byte order (Intel) verwendet. Default ist 0, wenn rvOptions nicht angegeben wird.
Beispiel
// 100 float-Werte aus Buffer lesen:
// Buffer aus Datei lesen, im Buffer an Position 20 Byte springen und ersten
// Wert lesen. Die Werte stehen im Abstand von 72 Bytes im Buffer.
// Lese 100 Werte.
data_buffer = fread(fp, "char8", lenbuffer);
rvY = mem_get(data_buffer, 20, "float", 100, 72);
Siehe auch mem_set.
History
Version |
Beschreibung |
---|---|
R2012.4 |
Neuer Parameter rvOptions und Aufruf mit 3 Parametern um einen Teilstring zu extrahieren. Neue Bezeichnungen in ssType („int8“ und „uint8“). |
5.8.2 |
Zusätzlicher, optionaler Parameter nRecLen. |
5.0.0 |
Neuer Typ „wchar_t“. |
4.2.0 |
Neu. |
Siehe auch
Überblick Strings, mem_alloc, mem_set, mem_len, strchar, strextract
id-1871369