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